Exécuter automatiquement le programme au démarrage sous linux ubuntu [fermé]

140

J'aurais besoin d'un programme à exécuter chaque fois que je démarre mon Linux Ubuntu. Je devrais donc l'ajouter à ma liste de programmes de démarrage. Juste un problème: je devrais le faire via un terminal.

Matteo Monti
la source
23
@Flexo Cette réponse n'est présente dans aucun des liens que vous avez fournis. +1 à cette question et réponse
Francisco Valdez
2
En fait, la réponse ici est référencée à partir de la première de ces questions.
Wilson F
4
Pour un moyen simple et portable de faire cela, vous pouvez utiliser Cron. Exécutez crontab -epour modifier le crontab de votre utilisateur; ajouter @reboot commandpour s'exécuter commandà chaque démarrage.
appas
2
Je ne sais pas si c'est un doublon ou non, mais c'est le premier hit google ..
Vladimir Verleg

Réponses:

178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Le script devrait maintenant démarrer au démarrage. Notez que cette méthode fonctionne également avec les liens physiques et les liens symboliques ( ln).

Éditer

À ce stade du processus de démarrage, PATH n'est pas encore défini, il est donc essentiel que des chemins absolus soient utilisés partout. MAIS, comme indiqué dans les commentaires de Steve HHH, déclarer explicitement le chemin complet du fichier ( /etc/init.d/filename) pour la commande update-rc.d n'est pas valide dans la plupart des versions de Linux. Selon la page de manuel de update-rc.d , le deuxième paramètre est un script situé dans /etc/init.d/*. Mise à jour du code ci-dessus pour refléter cela.

Une autre modification

Aussi comme indiqué dans les commentaires (par Charles Brandt), /filenamedoit être un script de style init. Un bon modèle a également été fourni - https://github.com/fhd/init-script-template .

Un autre lien vers un autre article juste pour éviter une éventuelle pourriture des liens (bien que ce serait triste si GitHub mourait) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

encoreAutre Modifier

Comme indiqué dans les commentaires (par Russell Yan), cela ne fonctionne que sur le mode par défaut de update-rc.d.

Selon le manuel de update-rc.d, il peut fonctionner sur deux modes, «les machines utilisant le mode hérité auront un fichier /etc/init.d/.legacy-bootordering», auquel cas vous devez passer la configuration de séquence et de niveau d'exécution via des arguments de ligne de commande.

L'argument équivalent défini pour l'exemple ci-dessus est

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .

Dave Lasley
la source
1
Tout comme un FYI, l'option «defaults» met un lien pour démarrer le script aux niveaux d'exécution 2, 3, 4 et 5. (et met un lien pour s'arrêter en 0, 1 et 6.)
Dave Lasley
5
Je viens d'essayer ceci dans Ubuntu Server 12.04 LTS, mais dans 12.04 vous ne pouvez pas avoir le préfixe /etc/init.d. C'est juste sudo update-rc.d filename defaults.
Steve HHH
1
@puk Les liens physiques et les liens symboliques fonctionneront avec cette méthode
Dave Lasley
14
Je voulais juste ajouter que / filename dans ce cas devrait être un script de style init. Voici un modèle pour démarrer votre propre script d'initialisation personnalisé: github.com/fhd/init-script-template
Charles Brandt
1
Lire ceci - unix.stackexchange.com/questions/28679/… - avec la réponse sera utile
Arjun Sreedharan