78 votes

Comment exécuter un script pendant le 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 que le système démarre. Comment faire pour que le script s'exécute automatiquement pendant le démarrage ?

58voto

Radu Rădeanu Points 156862

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

chmod 755 myscript

Une fois que c'est fait, créez un lien symbolique dans le répertoire du niveau d'exécution que vous souhaitez utiliser, par exemple si vous voulez exécuter un programme dans le niveau d'exécution graphique 2, le niveau d'exécution par défaut d'Ubuntu, vous le placerez dans le répertoire /etc/rc2.d répertoire. Vous ne pouvez pas seulement le placer dans le répertoire, vous devez signifier 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 donnant un numéro plus élevé.

Si le dernier script à être exécuté est rc.local et il est nommé S99rc.local alors vous devez ajouter votre script en tant que S99myscript .

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

Chacun est rétrocompatible /etc/rc*.d a des liens symboliques vers le répertoire /etc/init.d/ répertoire.

30voto

ErichBSchulz Points 381

Utilisez un crontab pour que votre script soit exécuté après le redémarrage,

vous pouvez le faire en ajoutant @reboot code dans cron

Ouvrir la crontab par l'utilisateur root :

$ sudo crontab -e

Ajoutez l'enregistrement suivant en bas :

@reboot yourScriptPath 

Cela fera ce que vous voulez.

28voto

thefourtheye Points 4769

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

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

15voto

YTerle Points 251

Cela a fonctionné pour moi sur Ubuntu 17.04 :

  1. créer un fichier script tel que disable_cdrom en pratique pour vous le lieu. 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. naviguer vers /etc/systemd/system et y créer un service fichier. Par exemple sudo gedit /etc/systemd/system/disable_cdrom.service

Mon disable_cdrom.service ressemble à ça :

[Unit]
Description=Disable cdrom

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

[Install]
WantedBy=multi-user.target

Donde ExecStart points pour exécuter votre script avec /bin/sh

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

5voto

M S Parmar Points 293

Inclure votre fichier script à /etc/init.d/ avec l'autorisation d'exécuter puis définir un niveau d'exécution différent

$ update-rc.d script-name default

Il mettra votre script au démarrage.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X