web-dev-qa-db-fra.com

exécuter les niveaux uniquement au démarrage

Je trouve le concept de niveaux d'exécution très déroutant. Actuellement, j'essaie d'exécuter un script uniquement au démarrage. Mais la configuration comme indiqué ci-dessous le fait fonctionner également au moment de l'arrêt.

Je programme un démon de cette façon:

update.rc-d script.sh defaults 100

J'ai aussi essayé

update-rc-d script.sh start 100

Mais cela ne fonctionne pas non plus.

1
Janus Gowda

Les niveaux d'exécution sont des groupes logiques de tâches. Traditionnellement, vous disposez de cinq niveaux d'exécution.

0 boot
1 single user 
2 not used
3 multiuser
4 not used 
5 gui
6 reboot 

Chaque niveau d'exécution définit un ensemble de tâches plus ou moins statique à exécuter. Le niveau d'exécution 1, peut ne pas avoir de réseau tandis que le niveau d'exécution 3 peut ne pas avoir l'écran de connexion GUI. Un système passe par tous les niveaux d'exécution inférieurs avant d'atteindre le niveau niveau d'exécution par défaut. Pour une boîte Ubuntu typique, le niveau d'exécution traditionnel est 5: GUI, tandis que d'autres distributions telles que Debian ou Gentoo peuvent être configurées pour exécuter 3: multi-utilisateur comme niveau d'exécution par défaut.

Dans les versions récentes d'ubuntu, ce modèle a quelque peu changé car la manière précédente de démarrer le système ne permettait pas à plusieurs services (programmes) de s'exécuter en parallèle. Sans aucun doute, il y avait aussi d'autres raisons.


Si je comprends bien votre objectif, vous devez exécuter une seule commande. Vous pouvez le faire en le mettant avec toutes les autres commandes que vous pourriez avoir dans le fichier /etc/rc.local :

$ chmod 755 /etc/rc.local 

Le système Init n'exécutera pas ce fichier sans bits d'exécution

$ cat /etc/rc.local
#!/bin/sh -e
# This script is executed at the end of each multiuser runlevel.

loadkeys  /root/jolemak.iso15.kmap
exit 0

Tout niveau d'exécution multi-utilisateur signifie tout niveau d'exécution supérieur à 3. Dans cet exemple, une seule commande est exécutée pour charger une disposition de clavier alternative pour les consoles virtuelles. Il sert de moyen rapide pour corriger la mise en page avant de comprendre comment installer et configurer correctement les mises en page supplémentaires.


Si vous devez faire des choses plus avancées, écrivez un script /etc/init.d/foo traditionnel ou un nouveau upstart (spécifique à Ubuntu) /etc/init/moo.conf. Étudiez les exemples de ce dossier et lisez le wiki pour plus d'informations.

https://help.ubuntu.com/community/UbuntuBootupHowto
http://upstart.ubuntu.com/getting-started.html
http://upstart.ubuntu.com/cookbook/

Votre question est également répondue ici: http://upstart.ubuntu.com/cookbook/#single-job et ici http://www.debuntu.org/how-to- gestion-des-services-avec-update-rc-d /

http://www.netbsd.org/docs/guide/en/chap-rc.html#chap-rc-scripts documente le fonctionnement de votre script. Votre script va être exécuté au démarrage ET à l'arrêt ET à chaque fois qu'un utilisateur exécute "service yourscriptname". Vous devez dire à votre script de vérifier son premier et unique paramètre. Si ce paramètre est "start", démarrez votre service ou faites tout ce que fait votre script. Si ce paramètre est "stop", arrêtez votre service ou ne faites rien. La façon dont vous gérez le "redémarrage" et le "statut" dépend de vous. À l'heure actuelle, votre script ignore ce paramètre, donc lorsque "script.sh start" est appelé au démarrage, tout va bien, mais lorsque "script.sh stop" est appelé à l'arrêt, le tout s'exécute à nouveau.

0
Sparr