rc.local not start at the boot
davidsen at tmr.com
Sat Nov 1 20:12:56 UTC 2014
Angelo Moreschini wrote:
> I would say that this thread is the continuation of a my preceding thread :
> “selecting some kind of files using the resync command”
> There I got help in order to make the backup of some my critical files.
> Now I am able to backing up these files using a shell script from the line command.
> But I would like also that this backup runs automatically when the computer boots.
> I know that this task is performed by the rc.local file, in Linux.
> Ed Greshko gave me a link about an announcement of Fedora concerning rc.local ....
> there is wrote :
> - - - - - - - - - -
> The |/etc/rc.d/rc.local| local customization script is no longer included by
> default. Administrators who need this functionality merely have to create this
> file, make it executable, and it will run on boot.
> - - - - - - - - - -
> After I read this announcement, I create the the file rc.local and I made it
> [angelo_dev at zorro rc.d]$ ls -l /etc/rc.d/rc.local
> -rwxr-xr-x. 1 root root 1262 Oct 27 12:18 /etc/rc.d/rc.local
> But, doing some tests, I saw that the scripts stored inside rc.local not run at
> boot, ...on my computer.
> I would like to have some advice concerning the way to manage tests, in order to
> understand because the content of rc.local is not executed at the start... and
> toobtain thatscripts run atthe boot
Having followed the thread as of the time of this message, a few comments about
scripts and such.
1 - redirection
You don't need to do separate redirects to put everything in the same place,
will do it, and make it clear what your doing. Interestingly, if you are
running from a terminal, you can "echo foo >&0" and still write the terminal
as long as STDIN is the terminal.
2 - directories
When you run a command, script or not, you may not be in the directory you
expect, or have the right PATH. When running from rc.local, you will be
starting as root (unless you use su) in /root, using the root PATH.
The trick is to force a login as yourself:
su -c 'My cmd1; My cmd2' >My_log_optional - My-username
This will get you in your usual login directory, PATH, and UID.
3 - more on directories and PATH
when you run a command with the 'batch' or 'at' commands, they
start in the current directory, and in most cases the current
PATH and UID.
Sometimes when I create working files, logs, command output, I want
to save for a few days. I use the 'at' command to delete them in a few days
so I leave less clutter if I don't use them. Starting in the current
directory is a benefit if you remember it will happen.
4 - logging
For crying out loud use the damn logger command to log stuff like
logger -t rc.local Started
# or on commands, use || to log fails:
My_cmd1 || logger -t rc.local "My_cmd1 exit with $! status"
# and when done:
logger -t rc.local "Complete, reached end"
Then you have a trail in the system log which you can find:
grep rc.local /var/log/messages
You can still put errors from a command in a file of its own, if
that provides documentation, but the note in the log remains you
Hope this is going to help the original problem and some others as well.
Bill Davidsen <davidsen at tmr.com>
"We have more to fear from the bungling of the incompetent than from
the machinations of the wicked." - from Slashdot
More information about the users