J'ai les lignes suivantes dans 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. if [ -f /resize ] then if [ -f /resize2 ] then sh /resize2 else sh /resize fi fi /etc/rc --foreground /sbin/iptables-restore /etc/iptables mkdir /tmp/cooks mkdir /tmp/cook chmod 777 /tmp/cook chmod 777 /tmp/cooks mkdir /tmp/xhprof chmod 777 /tmp/xhprof exit 0
mais ni /tmp/cooks
ni /tmp/cook
ni /tmp/xhprof
dir n'a pas été créé (au démarrage du système). J'utilise Debian GNU/Linux 6.0 squeeze (VPS)
Le script commence par #!/bin/sh -e
. L'option -e
signifie que le shell quittera si une command renvoie un statut différent de zéro. Il est probable que l'une des commands échoue. Peut /resize
être /resize
ou /resize2
renvoie non zéro, ou peut /etc/rc
être /etc/rc
est, ou iptables-restore
. Changez la ligne de shebang en #!/bin/sh -ex
et exécutez le script; vous verrez une trace des commands qu'il exécute.
Si vous trouvez que l'une des commands renvoie une valeur non nulle alors qu'elle aurait dû réussir, corrigez-la. Si vous trouvez que l'une des commands renvoie un code non nul légitimement, ajoutez || true
|| true
après. Si vous trouvez que vous ne vous souciez pas du statut de return de l'une des commands, supprimez le -e
.