web-dev-qa-db-fra.com

Comment exécuter un script au démarrage en tant que root

J'avais un script qui active automatiquement mon wifi sans utiliser networkmanager, mais je ne sais pas comment exécuter le script en tant que root pendant le démarrage du système. Comment faire pour que le script s'exécute automatiquement lors du démarrage?

55
user128712

Placez le script que vous souhaitez exécuter dans le répertoire /etc/init.d et rendez-le exécutable.

chmod 755 myscript

Une fois que cela est fait, créez un lien symbolique dans le répertoire de niveau d'exécution que vous souhaitez utiliser, par exemple si vous souhaitez exécuter un programme dans le niveau d'exécution graphique 2, le niveau d'exécution par défaut pour Ubuntu, placez-le dans le répertoire /etc/rc2.d. Vous ne pouvez simplement pas y placer le répertoire, vous devez indiquer quand il sera exécuté en indiquant le démarrage avec un "S" et l'ordre d'exécution est important. Placez-le après tout ce qui se trouve dans le répertoire en lui attribuant un numéro plus élevé.

Si le dernier script à exécuter est rc.local et qu'il s'appelle S99rc.local, vous devez ajouter votre script sous le nom S99myscript.

ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript

Chaque répertoire compatible /etc/rc*.d possède des liens symboliques vers le répertoire /etc/init.d/.

53
Radu Rădeanu

Incluez la commande dans /etc/rc.local. Il sera exécuté chaque fois que le niveau d'exécution de l'utilisateur change.

Remarque: Vous devez placer la commande avant la dernière ligne dans /etc/rc.local qui contient: "exit 0".

25
thefourtheye

Utilisez une option crontab pour que votre script soit exécuté après le redémarrage.

vous pouvez le faire en ajoutant le code @reboot dans cron

@reboot yourScriptPath 

le fera

15
hs.chandra

Cela a fonctionné pour moi sur Ubuntu 17.04:

  1. créez un fichier de script de visite tel que disable_cdrom à votre emplacement. Dans mon cas, home/yterle/disable_cdrom. Dans mon cas:

    #!/bin/sh
    eject /dev/sr0 -i 1
    
  2. le rendre exécutable chmod 775 disable_cdrom

  3. accédez à /etc/systemd/system et créez-y un fichier service. Par exemple Sudo gedit /etc/systemd/system/disable_cdrom.service

Mon disable_cdrom.service ressemble à ceci:

[Unit]
Description=Disable cdrom

[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom

[Install]
WantedBy=multi-user.target

ExecStart pointe pour exécuter votre script avec /bin/sh

Puis exécutez systemctl enable disable_cdrom.service pour activer le service systemd

6
YTerle

Incluez votre fichier de script à /etc/init.d/ avec l'autorisation Executable, puis définissez un niveau d'exécution différent

$ update-rc.d script-name default

Cela mettra votre script au démarrage.

5
M S Parmar

Créez un fichier texte comme celui-ci dans /etc/cron.d/:

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot   root    yourScriptPath

(Vous devez remplacer yourScriptPath par le chemin du script que vous souhaitez exécuter.)

4
jarno