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

50

J'avais un script qui active automatiquement mon accès 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?

    
posée user128712 03.05.2013 - 14:08
la source

6 réponses

47

Placez le script que vous voulez 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 répertoire. 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 /etc/rc*.d rétro-compatible possède des liens symboliques vers le répertoire /etc/init.d/ .

    
réponse donnée Radu Rădeanu 03.05.2013 - 14:28
la source
25

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 de /etc/rc.local qui contient: "exit 0".

    
réponse donnée thefourtheye 03.05.2013 - 14:13
la source
12

Utilisez une option crontab pour exécuter votre script après le redémarrage,

vous pouvez le faire en ajoutant @reboot code dans cron

@reboot yourScriptPath 

le fera

    
réponse donnée hs.chandra 03.05.2013 - 14:19
la source
5

Incluez votre fichier de script dans /etc/init.d/ avec permission exécutable puis définissez un niveau d'exécution différent

$ update-rc.d script-name default

Cela mettra votre script au démarrage du démarrage.

    
réponse donnée M S Parmar 05.06.2015 - 20:21
la source
4

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

    
réponse donnée jarno 27.12.2015 - 14:43
la source
4

Cela a fonctionné pour moi sur Ubuntu 17.04:

  1. créer un fichier de script de tour comme disable_cdrom à votre convenance 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 vgaoff.service pour activer le service systemd

    
réponse donnée YTerle 28.09.2017 - 23:11
la source

Lire d'autres questions sur les étiquettes