45 votes

Pourquoi la commande dans /etc/rc.local n'est-elle pas exécutée au démarrage ?

J'ai une seule commande dans mon /etc/rc.local script qui est censé démarrer le démon de mise à jour pour Tiny Tiny RSS pendant le démarrage, mais le script n'est pas exécuté pendant le 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 censé ê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 depuis la ligne de commande, le 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 redémarrage de mon serveur jusqu'à ce que ce problème soit résolu.

Semblable questions déjà existent, mais jusqu'à présent, je n'ai pas pu appliquer les informations qu'ils contiennent à mon problème spécifique.

Pourquoi la commande dans rc.local n'est-elle pas exécutée au démarrage ?

1voto

SyaSyaNown Points 11

J'ai édité une fois rc.local avec Notepad sous 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, tel que Notepad++, pour convertir le style EOL en "Unix", peut résoudre le problème.

Vous pouvez également le faire en :set ff=unix dans Vim.

1voto

RBADS Points 772

J'ai constaté dans les conteneurs Ubuntu lxc que si rc.local a un shebang parfaitement correct par exemple.

#!/bin/sh

il échoue, mais si vous supprimez le tout, il fonctionne.

Je n'ai pas encore compris pourquoi ou quel Shell il utilise, mais je pense qu'il explose au premier non zéro. (Dans d'autres installations Ubuntu, le shebang n'est pas un problème).

0voto

William Points 111

Vous devrez vous assurer que /etc/rc.local est exécuté lors du démarrage du serveur avec la commande :

sudo systemctl enable rc-local.service

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