C'est mon 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.
cd /root/server/srv/
./start_srv &
exit 0
Quand j'exécute
cd /root/server/srv/
./start_srv &
via le terminal moi-même, tout commence normalement et tout fonctionne, mais lorsque j'essaie de le faire via rc.local, il ne démarre pas.
Je sais que rc.local n'a pas besoin de Sudo, etc.
Qu'est-ce que je fais mal?
ls -ld/root: drwx------ 4 root root 4096
,
ls -ld/root/server: drwxr-xr-x 3 root root 4096
,
ls -ld/root/server/srv/start_srv: -rwxr-x--x 1 500 500 468420
ls -ld/root/server/srv: drwxrwxrwx 2 500 500 4096
Afin de vérifier votre script /etc/rc.local
, vous devez utiliser cette commande:
Sudo service rc.local start
Lorsque le système init
démarre rc.local
scripts, il s'exécute en tant que racine , mais si vous souhaitez vérifier votre script, vous devez devenir root via la commande Sudo
.
C'est pourquoi vous avez des erreurs comme Can't CD to /root/server/srv/
.
Si votre script ne fonctionne pas pendant le processus de démarrage, considérez que l'environnement est restreint. Vous devez donc définir les variables manquantes selon les besoins de votre script.
Ici est un exemple.
L'erreur: /bin/sh: 0: Illegal option -
est due au format de fichier DOS
.
Pour résoudre ce problème, vous devez installer dos2unix l'utilitaire et convertir le fichier rc.local:
Sudo dos2unix /etc/rc.local