Mon /etc/rc.local
script contient une seule commande censée démarrer le démon de mise à jour de Tiny Tiny RSS au démarrage, mais le script n'est pas exécuté au démarrage. Pourquoi?
L'ensemble du fichier /etc/rc.local:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet
exit 0
/etc/rc.local
est exécutable:
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
existe et est exécutable:
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27 2012 /etc/init.d/rc.local
/etc/init.d/rc.local
est supposé être exécuté au démarrage pour ce niveau d'exécution:
# runlevel
N 2
# ls -l /etc/rc2.d/S99rc.local
lrwxrwxrwx 1 root root 18 Sep 22 2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local
Si j'appelle manuellement /etc/rc.local à partir de la ligne de commande, update_daemon se charge ...
# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ? S 0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
... ce que je dois me rappeler de faire chaque fois que mon serveur redémarre jusqu'à ce que ce problème soit résolu.
Des questions similaires existent déjà , mais je n’ai pas encore pu appliquer les informations qu’il contient à mon problème spécifique.
Pourquoi la commande dans rc.local n'est-elle pas exécutée au démarrage?
requiretty
réglage. Lorsque vous êtes connecté, vous exécutez le script en mode TTY, mais lors du démarrage du système, ce n'est pas en mode TTY. Ce lien peut vous aider à shell-tips.com/2014/09/08/… Merci.Réponses:
rc.local
Le script se ferme si une erreur survient lors de l'exécution de l'une de ses commandes (mentionnez l'-e
indicateur dans#!/bin/sh -e
).Il est possible que certaines conditions préalables ne soient pas remplies lorsque vous essayez d'exécuter vos commandes au moment de l'
rc.local
exécution. Par conséquent, l'exécution de votre commande échoue.J'ai rencontré la même chose lors de la configuration manuelle du gouverneur cpu sans y parvenir
rc.local
. Voici ma solution de contournement personnalisée, qui consisteupdate-rc.d
à exécuter vos commandes au démarrage:myscript.sh
dans le répertoire/etc/init.d
avec un en-tête:#!/bin/sh
sudo chmod +x /etc/init.d/myscript.sh
sudo update-rc.d myscript.sh defaults
Vous pouvez également vérifier les
/etc/network/if-up.d
scripts et voir si vous pouvez déclencher vos commandes au démarrage de la mise en réseau.la source
update-rc.d
j'ai eu un problème similaire dans rc.local ne pas exécuter au démarrage
sshades m'a fourni la réponse suivante:
Bien que je n'aie pas testé sa solution, je pense que cela semble logique et que cela fonctionnera. Toutefois :
J'ai également trouvé une solution qui ajoute un script à ./.config/autostart-scripts/ fera l'affaire
la source
rc.local
est désactivé, quelle est l'alternative?essayer
sudo sysv-rc-conf
et vérifier sirc.local
est activéla source
sudo apt install sysv-rc-conf
rc.local
n'est même pas dans ma liste de services!Assurez-vous que le script rc.local est exécutable:
Ensuite, activez-le:
Redémarrez le système ou démarrez le script manuellement en lançant:
Le statut du service peut être affiché en exécutant:
la source
rc-local
service.Nous avons eu ce problème sur certains serveurs hébergés chargeant des règles FW.
Sur ces boîtes, ils redémarrent TRÈS rapidement et nous avons trouvé qu'il suffisait de mettre un "sommeil 1" dans rc.local avant que les instructions de chargement ne semblent résoudre le problème. Je suppose que cela a laissé un peu de temps pour que les interfaces se règlent avant de charger les règles FW.
la source
sleep 1
résolu mon problème. Intéressant, j'ai beaucoup de serveurs mais un seul a ce problème.Une fois, j'ai édité
rc.local
avec Notepad dans Windows et il a commencé à avoir ce problème.Dans ce cas, l'utilisation d'un éditeur de texte prenant en charge la conversion EOL, telle que Notepad ++, pour convertir le style EOL en "Unix", peut résoudre le problème.
Vous pouvez aussi le faire par
:set ff=unix
dans Vim.la source
J'ai trouvé dans les conteneurs Ubuntu LXC que si Rc.Local a un shebang parfaitement correct par exemple
cela échoue, mais si vous supprimez le shebang, cela fonctionne.
Pas au courant de pourquoi ou de quel shell il utilise je pense qu'il bombe sur le premier non-zéro aussi. (Dans d'autres installations d'Ubuntu, le bon shebang n'est pas un problème)
la source
Vous devrez vous assurer que cela
/etc/rc.local
est exécuté lors du démarrage du serveur avec la commande:sudo systemctl enable rc-local.service
la source