Page 1 sur 1

[rc.d] un script ne s'y execute pas au boot (résolu)

Publié : mar. 21 mai 2013, 23:17
par mulanee
Bonsoir,
J'ai besoin de lancer une commande au boot puisque je n'ai pas trouvé de service associé.
J'ai un script basique que j'ai mis dans /etc/rc.d et que j'ai rendu éxécutable.
Ce script ne se lance pas au boot, par contre il se lance quand on double clique dessus.
Comment le rendre actif au boot ?
Merci.

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mar. 21 mai 2013, 23:25
par widapit
Salut !

sauf de le faire explicitement, /etc/rc.d n'est plus lu depuis Systemd ... :mrgreen:
Pour lancer un script au démarrage, il te faut lui créer un service dans le genre :

Code : Tout sélectionner

# vim /etc/systemd/system/un_script.service
[Unit]
Description=une description du script

[Service]
ExecStart=/chemin/vers_le/script/par_exemple.sh

[Install]
WantedBy=multi-user.target
puis de le lancer avec

Code : Tout sélectionner

systemctl enable un_script.service

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mar. 21 mai 2013, 23:36
par mulanee
On dirait que dans /etc/systemd/system ce ne sont que des raccourcis.

J'y avais pensé mais c'est en faisant systemctl enable etc... que l'on remplit /etc/systemd/system, non?

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mar. 21 mai 2013, 23:44
par widapit
Trouvé sur https://wiki.archlinux.org/index.php/Systemd#Units
The available unit files can be seen in /usr/lib/systemd/system/ and /etc/systemd/system/ (the latter takes precedence)
moi, j'ai écrit les miens directement dans /etc/systemd/system ...

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 07:33
par mulanee
Vu.
Il faut commencer par mettre le script dans

Code : Tout sélectionner

/usr/lib/systemd/system
Puis le rendre actif pour le boot par l'option enable.
C'est à ce moment que le lien est créé dans

Code : Tout sélectionner

/etc/systemd/system/multi-user.target.wants
edit:reste juste à trouver le cas échéant comment garder la main après un

Code : Tout sélectionner

sudo systemctl start toto.service

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 07:42
par widapit
edit:reste juste à trouver le cas échéant comment garder la main après un

Code : Tout sélectionner

sudo systemctl start toto.service
comprend pas... m'enfin oui, après tout dépend de ce que tu vas mettre dans ton *.service. Mais une fois créé, tu le traites comme un autre...
C'est à dire, enable, start, stop, etc... je suppose que si c'est pour un lancement auto au démarrage, enable fera l'affaire...

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 11:54
par z3bra
Il est, en général, de bonne pratique de placer tous ses services "personnels" dans /etc/systemd/system/ afin de pas les confondre avec les services installés par les paquets. (après tu fais comme il te chantes :D /etc/mes_super_services/ et symlink ensuite ou ce que tu veux ^^)

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 12:01
par Ypnose
mulanee a écrit :Vu.
Il faut commencer par mettre le script dans

Code : Tout sélectionner

/usr/lib/systemd/system
Puis le rendre actif pour le boot par l'option enable.
C'est à ce moment que le lien est créé dans

Code : Tout sélectionner

/etc/systemd/system/multi-user.target.wants
Non. Tu peux mettre les services dans /etc/systemd/system comme widapit l'a dit et ensuite les activer avec l'option enable.
Si tu les places dans /usr/lib/systemd/system, il est possible que tes services disparaissent/soient remplacés lors de mises à jour.
Les placer dans /etc/ permet d'être sur qu'ils sont bien gardés. Ces derniers "inhibent" ceux installés dans /usr.

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 21:54
par mulanee
Bon j'ai fait comme dit.

Reste que

Code : Tout sélectionner

└»»sudo systemctl start ushare.service
ne me rend pas la main.

Peut-être un truc qui manque dans le fichier service ?

Code : Tout sélectionner

[Unit]
Description=Service Ushare serveurUpNp
StopWhenUnneeded=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ushare -w

[Install]
WantedBy=multi-user.target

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 22:03
par benjarobin
Pourquoi avoir mit :

Code : Tout sélectionner

Type=oneshot
RemainAfterExit=yes
Voir la documentation...

Re: [rc.d] un script ne s'y execute pas au boot

Publié : mer. 22 mai 2013, 22:34
par mulanee
Pourquoi avoir mit :
J'ai recopié un autre service :?

Bon j'ai supprimé les 2 lignes en question ça a l'air de fonctionner :mrgreen:

Re: [rc.d] un script ne s'y execute pas au boot (résolu)

Publié : jeu. 23 mai 2013, 00:56
par benjarobin
Donc tu n'as pas lu la documentation, c'est mieux de spécifié le "Type"

Re: [rc.d] un script ne s'y execute pas au boot (résolu)

Publié : jeu. 23 mai 2013, 07:19
par mulanee
Donc tu n'as pas lu la documentation
Ok,

Code : Tout sélectionner

Type=simple
Pour le suivi le lien est là

https://wiki.archlinux.org/index.php/Sy ... vice_files

Re: [rc.d] un script ne s'y execute pas au boot (résolu)

Publié : jeu. 23 mai 2013, 11:44
par Ypnose
Essaie aussi: man systemd.service