Problem :
Well, I do know that for a single script the question is to just put the corresponding file in directory /etc/rc.local
, right? But, what if this script depends on other files (i.e. a few scripts and a couple of text files)? What should I do in order to avoid making this certain folder a mess?
Solution :
If by depends, you mean it uses and/or calls them, that should not matter. You can just add a line to the end of the rc.local file as a command to call the main script and it should just work.
There is an alternative to rc.local, atleast on desktop versions. You can use the Startup Applications
app to add your script to it. The difference between the two methods, other than CLI vs GUI version of adding is that rc.local scripts are run as ROOT and the startup applications as your user.
Edit
From the comments, your problem becomes clearer. It seems that the script is using relative paths to access the dependency, which I’m guessing isn’t code. The working directory of the above two methods are either /root/
or /home/<user name/
, thus the dependencies dont load.
Easiest fix is to cd
to the folder before invoking the python script. Either of these should work:
– Use cd /home/..../.../ && python perdc_task.py
as the command in either of those two methods.
– If that doesnt work, make a script(.sh
should do) which calls the above command and call this script in the above 2 methods.
The more elegant way of doing it is
– Do the cd
from inside the python script by programatically determining its path
– Or Use the above path to access the dependencies by absolute path
Edit2
Ubuntu might have moved away from rc.local in favor of upstart. Try to see if using upstart as in this question works for you.
If you have cron
enabled (which you should) there is a special @reboot
command which runs on startup. I am unsure of this works on cold boots though, but from what I can see it does.
If it works, you just write a script, plonk it in some clean and organised directory, then call it through cron
.