I have a single command in my /etc/rc.local
script that is supposed to start the update daemon for Tiny Tiny RSS during startup, but the script is not executed during startup. Why?
The entire /etc/rc.local file:
#!/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
is executable:
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local
/etc/init.d/rc.local
exists and is executable:
# 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
is supposed to be executed at startup for this runlevel:
# 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
If I manually call /etc/rc.local from the command line the update_daemon loads…
# /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
… which I have to remember to do every time my server restarts until this problem is fixed.
Similar questions already exist, but so far I've been unable to apply the information within to my specific problem.
Why is the command in rc.local not executed during startup?
Best Answer
rc.local
script exits if any error occurs while executing any of its commands (mention the-e
flag in#!/bin/sh -e
).It is possible that some prerequisites are not met when you try to run your commands when
rc.local
execution takes place, so your command execution fails.I encountered the same thing while manually setting cpu governor and failing to do so in
rc.local
. Here's my custom workaround, which usesupdate-rc.d
to make your commands run on startup:myscript.sh
in directory/etc/init.d
with a heading:#!/bin/sh
sudo chmod +x /etc/init.d/myscript.sh
sudo update-rc.d myscript.sh defaults
Also, you could check
/etc/network/if-up.d
scripts and see if you could trigger your commands when networking starts.