Comment exécuter un script au démarrage? [dupliquer]

92

J'ai un script dans un dossier:

/path/to/my/script.sh

J'ai besoin que ce script soit exécuté à 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?

    
posée Rusty 12.12.2012 - 15:40
la source

5 réponses

120

Vous aurez besoin des privilèges root pour tout ce qui suit. Pour obtenir root, ouvrez un terminal et exécutez la commande

sudo -i

et l'invite de commande changera en "#" pour indiquer que la session du terminal a les privilèges root.

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

vi /etc/rc.local

avec un contenu similaire à 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 job de démarrage (pour les systèmes antérieurs à 15.04)

Créer /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 # 3: Ajouter un script d'initialisation (obsolète)

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

vi /etc/init.d/myscript

(Évidemment, il n’est pas nécessaire de l’appeler "myscript".) Dans ce script, faites ce que vous voulez faire. Peut-être que vous exécutez 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 d’initialisation pour exécuter ce script au démarrage.

update-rc.d myscript defaults
    
réponse donnée jdthood 12.12.2012 - 16:07
la source
43

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).

    
réponse donnée Dan Jones 12.12.2012 - 17:20
la source
11

depuis le terminal

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

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. modifiez Exec , Name et Comment value et ajoutez-le 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. ajoute les mêmes Exec , Name et Comment .
réponse donnée ChaosPredictor 16.09.2015 - 16:31
la source
2

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: lien

    
réponse donnée Gp2mv3 12.12.2012 - 15:47
la source
-1

Editez simplement rc.local nano /etc/init.d/rc.local comme suit:

/path/to/my/script.sh || exit 1 
exit 0
    
réponse donnée Arcsector 26.08.2017 - 00:43
la source

Lire d'autres questions sur les étiquettes