Ubuntu - Exécuter la commande au démarrage avec «sudo»

91

Je voudrais exécuter une sudocommande au démarrage d'Ubuntu (avant que quiconque se connecte):

sudo searchd

Comment ferais-je ça?

Mark Willis
la source

Réponses:

195

Vous pouvez ajouter la commande dans le /etc/rc.localscript qui est exécuté à la fin du démarrage.

Écrivez la commande avant exit 0. Tout ce qui est écrit après exit 0ne sera jamais exécuté.

Didier Trosset
la source
38
Avant, bien sûr. Tout ce qui est écrit après exit 0ne sera jamais exécuté.
Didier Trosset
Salut, j'ai aussi une commande rvmsudo à exécuter dans la même situation. la commande demande normalement le mot de passe. Y aura-t-il des problèmes si je place la commande directement dans /etc/rc.local?
ravi1991
@fmonegaglia Cela dépend. Si vous voulez que la commande soit lancée et que le script attend qu'elle se termine avant de passer à la commande suivante du script, alors non &. Si vous souhaitez que la commande suivante soit lancée même si celle en cours n'est pas terminée, ajoutez un fichier &.
Didier Trosset
@NoOne Vérifiez les droits d'accès sur ce fichier pour l'utilisateur actuel. Démarrer la commande de l'éditeur avec sudo peut faire l'affaire.
Didier Trosset
1
Bien sûr, il existe et oui, j'ai défini le bit exécutable. Lorsque j'essaie d'activer le service, je reçois uniquement des The unit files have no installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units) […].conseils à ce sujet?
oarfish
9

Modifiez la configuration du tty /etc/init/tty*.confavec un shellscript comme paramètre:

(...)
exec /sbin/getty -n -l  theInputScript.sh -8 38400 tty1
(...)

Cela suppose que nous éditons tty1 et que le script qui lit l'entrée est theInputScript.sh.

Un mot d'avertissement que ce script est exécuté en tant que root, donc lorsque vous y entrez des éléments, vous avez des privilèges root. Ajoutez également un chemin à l'emplacement du script.

Important: le script lorsqu'il se termine, doit invoquer le / sbin / login sinon vous ne pourrez pas vous connecter au terminal.

Pépite
la source
1
cette réponse m'a été très utile lors de la construction de notre appareil, merci beaucoup
José F. Romaniello
0

Belles réponses. Vous pouvez également définir des Jobs (c'est-à-dire des commandes) avec " Crontab " pour plus de flexibilité (qui fournit différentes options pour exécuter des scripts, enregistrer les sorties, etc.), bien que cela nécessite plus de temps pour être compris et défini correctement:

En utilisant '@reboot', vous pouvez exécuter une commande une fois, au démarrage.

Conclusion : courir$ sudo crontab -e -u root

Et ajoutez une ligne à la fin du fichier avec votre commande comme suit:

@reboot sudo searchd
Javi
la source