web-dev-qa-db-fra.com

Comment exécuter un script au démarrage?

J'ai un script dans un dossier:

/path/to/my/script.sh

J'ai besoin de ce script pour qu'il s'exécute à chaque démarrage du système (même si personne ne se connecte au système). Que dois-je faire pour que cela se produise?

106
Rusty

Vous aurez besoin de privilèges root pour tout ce qui suit. Pour obtenir la racine, ouvrez un terminal et lancez la commande

Sudo -i

et la commande Invite passera à '#' indiquant que la session de terminal dispose des privilèges root.

Alternative n ° 1: Ajouter des commandes à /etc/rc.local

vi /etc/rc.local

avec un contenu comme celui-ci:

# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1   # Added by me
exit 0

Alternative n ° 2: Ajouter un travail Upstart (pour les systèmes de plus de 15.04)

Créez /etc/init/myjob.conf

vi /etc/init/myjob.conf

avec un contenu comme celui-ci

description     "my job"
start on startup
task
exec /path/to/my/script.sh

Alternative n ° 3: Ajouter un script d'initialisation (obsolète)

Créez un nouveau script dans /etc/init.d/myscript.

vi /etc/init.d/myscript

(Évidemment, cela ne doit pas nécessairement s'appeler "myscript".) Dans ce script, faites ce que vous voulez. Peut-être juste lancer le script que vous avez mentionné.

#!/bin/sh
/path/to/my/script.sh

Rendez-le exécutable.

chmod ugo+x /etc/init.d/myscript

Configurez le système init pour exécuter ce script au démarrage.

update-rc.d myscript defaults
133
jdthood

Vous n'avez pas besoin de root, ni même de vous connecter.

Vous pouvez éditer votre crontab (crontab -e) et créer une entrée comme celle-ci:

@reboot /path/to/script.sh

De cette façon, vous pouvez l'exécuter en tant qu'utilisateur régulier. @reboot signifie simplement qu'il est exécuté au démarrage de l'ordinateur (pas nécessairement au moment du redémarrage).

53
Dan Jones

du terminal

  1. créer le fichier newshell.sh.desktop dans le dossier ~/.config/autostart:

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. changer Execname__, Nameet Commentvaleur et ajouter au fichier: première ligne

     [Desktop Entry]
     Type=Application
     Exec=/full/link/to/your/newshell.sh
     Name=newshell
     Comment=whatever you want
    
  3. enregistrer

ou

vous pouvez le faire depuis l'interface graphique:

  1. exécutez l'outil "Applications de démarrage" dans Ubuntu 14.04, il vous suffit de l'écrire dans le champ de recherche.
  2. ajoutez les mêmes Execname____, Nameet Commentname__.
13
ChaosPredictor

Dans votre maison, vous avez un fichier nommé .bashrc. Ce fichier est exécuté à l'ouverture de votre session.

Il suffit de mettre quelque chose comme ceci à la fin du fichier:

sh /path/to/your/script.sh

EDIT: désolé, je n'ai pas répondu à votre question car ma solution est exécutée lorsqu'un utilisateur est connecté ...

Pour exécuter quelque chose avant la connexion, vous pouvez essayer rcconf ou rc-file: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html

2
Gp2mv3