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:

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 in crontab, as @reboot
    python /home/username/Documents/startuptest.py
    , both as the regular user and as sudo

  • 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.)


  • 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()))
  • 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

Put this in /etc/init (Use /etc/systemd in Ubuntu 15.x)


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
sudo service mystartupscript stop

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 !!

Create file ~/.config/autostart/MyScript.desktop

[Desktop Entry]
Exec=python /home/your_path/script.py


It helps me!

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.

nano /etc/rc.local

and edit in

python ~/path-to-script.py

worked for me