Exécuter la commande au démarrage en tant que root

9

J'ai besoin d'exécuter un script bash au démarrage en tant que superutilisateur dans Xubuntu. Je ne sais pas où commencer. Je dois faire quelque chose décrit dans un guide Arch Linux. Ce guide dit exactement:

Ajoutez ce qui suit à la fin du fichier: /etc/rc.sysinit

# Do my action
/etc/rc.d/do_my_action

/bin/dmesg >| /var/log/dmesg.log

Mais je n'ai pas /etc/rc.sysinitet /etc/rc.d/dans Xubuntu. Je suis sûr qu'il y en a des équivalents, non?

lorenzo-s
la source

Réponses:

9

Le fichier que vous voulez est /etc/rc.local. Ce script sera exécuté près ou à la fin du processus de démarrage. Ainsi, tout devrait être en place d'ici là.

Cependant, comme l'a souligné @ bodhi.zazen, Upstart pourrait être la meilleure option pour vous. Vérifiez-le .

Remarque 1 : dans 15.04 et versions ultérieures, Ubuntu utilise systemdet non Upstart. Par conséquent, si vous souhaitez adopter une approche de service, voyez cette réponse ici par @muru

Remarque 2 : dans 16.10, il n'y en a pas /etc/rc.localpar défaut, mais si vous le créez et le rendez exécutable ( sudo chmod u+x /etc/rc.local), cela fonctionnera car il existe un service systemd pour le récupérer s'il existe. N'oubliez pas de mettre une ligne avec exit 0à la fin du fichier pour éviter toute commande ayant échoué provoquant le blocage de l'ensemble du processus de démarrage.

Scott Severance
la source
Donc, je viens de mettre ce code ici? Pour l'instant, ce fichier ne contient que exit 0. Et si je peux demander, au démarrage quand il rc.localest exécuté, le système de fichiers est-il prêt pour que je puisse également écrire un journal quelque part pour la commande que je veux exécuter?
lorenzo-s
Il semble que vous essayiez d'exécuter un script de démarrage (init). Ubuntu utilise upstart. rc.local exécutera une commande ou une série de commandes au démarrage et peut être ou non votre meilleure option. Qu'essayez-vous de faire exactement?
Panther
@ lorenzo-s: Voir ma modification.
Scott Severance
Vous pouvez également trouver cette réponse utile: askubuntu.com/a/20347/3940
Takkat
1
Ok, j'ai résolu de passer my_scriptde /usr/local/binà /usr/bin. Je peux également enregistrer la connexion à l' /var/logaide de my_script &>> /var/log/my_script. Merci beaucoup.
lorenzo-s