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?
59
autostart
manifestes ou dans des*.service
fichiers situés à plusieurs endroits, ainsi que dansinit.d
oucrontab
. Voir ceci: unix.stackexchange.com/a/525845/43233Réponses:
Placez le script que vous souhaitez exécuter dans le répertoire /etc/init.d et rendez-le exécutable.
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, vous devez le placer dans le
/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 est nommé,S99rc.local
vous devez ajouter votre script en tant queS99myscript
.Chaque
/etc/rc*.d
répertoire rétrocompatible a des liens symboliques vers le/etc/init.d/
répertoire.la source
/etc/rc2.d
, au lieu de cerc3.d
qui est indiqué dans l'exemple. Il semble que cerc2.d
n’est pas seulement le niveau d’exécution graphique.cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
vous mènera à quel/etc/rc?.d
répertoire correspond à votre niveau d'exécution par défaut.rc.local
et qu’il est nommé,S99rc.local
vous devez ajouter votre script en tant queS99myscript
.". Voulez-vous dire: "Si le dernier script à exécuter estmyscript
et qu'il est nommé,S99myscript
vous devez ajouter votre script en tant queS99myscript
." ???Inclure 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".
la source
/etc/rc.local
qui contient:exit 0
/etc/rc.local
dans Ubuntu 15.10 a commenté que "Ce script est exécuté à la fin de chaque niveau d’exécution multi-utilisateur." Donc, le script peut être exécuté plusieurs fois au démarrage, non?Utilisez une
crontab
option pour que votre script soit exécuté après le redémarrage,vous pouvez le faire en ajoutant du
@reboot
code dans cronOuvrez la crontab par l'utilisateur root:
Ajoutez le prochain enregistrement en bas:
Cela fera ce que vous voulez.
la source
crontab -e
, qui n'a pas besoin des privilèges de superutilisateur? Je me demande si elle peut exécuter des scripts devant être exécutés en tant que root.sudo crontab -e
pour lui permettre d'exécuter le script en tant que root lors du démarrage./var/run/crond.reboot
, sinon, ne pas exécuter la tâcheCela a fonctionné pour moi sur Ubuntu 17.04:
créer un fichier de script de visite comme
disable_cdrom
vous le souhaitez. Dans mon cashome/yterle/disable_cdrom
. Dans mon cas:le rendre exécutable
chmod 775 disable_cdrom
/etc/systemd/system
et créez-y unservice
fichier. Par exemplesudo gedit /etc/systemd/system/disable_cdrom.service
Mon
disable_cdrom.service
ressemble à ceci:Où
ExecStart
points pour exécuter votre script avec/bin/sh
Puis exécutez
systemctl enable disable_cdrom.service
pour activer le service systemdla source
systemctl enable disable_cdrom.service
Incluez votre fichier de script
/etc/init.d/
avec l'autorisation Executable, puis définissez un niveau d'exécution différentCela mettra votre script au démarrage.
la source
update-rc.d script-name enable
?Créez un fichier texte comme celui-ci dans
/etc/cron.d/
:(Vous devez remplacer
yourScriptPath
par le chemin du script que vous souhaitez exécuter.)la source
Faites attention avec l'ajout du script à
rc.local
- j'étais bloqué dans l'écran de démarrage à cause de cela. Appuyez sur Alt+ pour F1révéler ce qui se passait derrière l'écran de démarrage (le scriptrc.local
était en cours d'exécution).Je ne pouvais pas en sortir.
rien ne fonctionne.
Je devais démarrer à partir d'une image USB Ubuntu, trouver
rc.local
, me donner les droits de fichier et de le supprimer. Je suppose que vous ne devriez pas faire de choses si vous ne savez pas ce que vous faites.la source