Run Python script at startup in Ubuntu
PythonLinuxShellUbuntuPython Problem Overview
I have a short Python script that needs to run at startup - Ubuntu 13.10. I have tried everything I can think of but can't get it to run. The script:
#!/usr/bin/python
import time
with open("/home/username/Desktop/startup.txt", 'a') as f:
f.write(str(time.time()) + " It worked!")
(The actual script is a bit different, as I'm just using this for testing purposes, but you get the idea.)
I've tried all of the following, with no luck:
-
Put the command
python startuptest.py
incrontab
, as@reboot python /home/username/Documents/startuptest.py
, both as the regular user and assudo
-
Put the command
python /home/username/Documents/startuptest.py
in/etc/rc.local
-
Opened Ubuntu's Startup Applications and put the command there
-
Done all of the preceding, putting the command into a shell script and calling that shell script instead
Nothing works. I get the feeling I'm missing something simple. Any ideas? (The script runs fine if I just run the command from a terminal.)
Python Solutions
Solution 1 - Python
Instructions
-
Copy the python file to /bin:
sudo cp -i /path/to/your_script.py /bin
-
Add A New Cron Job:
sudo crontab -e
Scroll to the bottom and add the following line (after all the
#'s
):@reboot python /bin/your_script.py &
The “&” at the end of the line means the command is run in the background and it won’t stop the system booting up.
-
Test it:
sudo reboot
Practical example:
-
Add this file to your Desktop: test_code.py (run it to check that it works for you)
from os.path import expanduser import datetime file = open(expanduser("~") + '/Desktop/HERE.txt', 'w') file.write("It worked!\n" + str(datetime.datetime.now())) file.close()
-
Run the following commands:
sudo cp -i ~/Desktop/test_code.py /bin
sudo crontab -e
-
Add the following line and save it:
@reboot python /bin/test_code.py &
-
Now reboot your computer and you should find a new file on your Desktop:
HERE.txt
Solution 2 - Python
Put this in /etc/init
(Use /etc/systemd
in Ubuntu 15.x)
mystartupscript.conf
start on runlevel [2345]
stop on runlevel [!2345]
exec /path/to/script.py
By placing this conf file there you hook into ubuntu's upstart service that runs services on startup.
manual starting/stopping is done with
sudo service mystartupscript start
and
sudo service mystartupscript stop
Solution 3 - Python
If you are on Ubuntu you don't need to write any other code except your Python file's code , Here are the Steps :-
- Open Dash (The First Icon In Sidebar).
- Then type Startup Applications and open that app.
- Here Click the Add Button on the right.
- There fill in the details and in the command area browse for your Python File and click Ok.
- Test it by Restarting System . Done . Enjoy !!
Solution 4 - Python
Create file ~/.config/autostart/MyScript.desktop with
[Desktop Entry]
Encoding=UTF-8
Name=MyScript
Comment=MyScript
Icon=gnome-info
Exec=python /home/your_path/script.py
Terminal=false
Type=Application
Categories=
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0
It helps me!
Solution 5 - Python
In similar situations, I've done well by putting something like the following into /etc/rc.local:
cd /path/to/my/script
./my_script.py &
cd -
echo `date +%Y-%b-%d_%H:%M:%S` > /tmp/ran_rc_local # check that rc.local ran
This has worked on multiple versions of Fedora and on Ubuntu 14.04 LTS, for both python and perl scripts.
Solution 6 - Python
nano /etc/rc.local
and edit in
>python ~/path-to-script.py
worked for me