Skip to content
Advertisement

@reboot cronjob not executing

I have a Python script which simply writes some text and saves it to a file

#! /usr/bin/python3
def main():
     filename = '/home/user/testHello.txt'
     openfile = open(filename,"w")
     print("Hello CRON", file = openfile)
if __name__ == "__main__":
     main();

I want to execute this script at startup via CRON. So I edit the crontab listing by using

>crontab -e

My entire crontab looks like :

SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin
MAILTO = root
HOME = /
# run-parts
1 * * * * /home/user/tester.py
@reboot /home/user/tester.py

This is the location of the file, and the file has permissions to execute. I can run the file no problem as a script from the commandline. Yet when I restart the machine, no file is generated. I am trying to understand why, and played around with the crontab entry.

@reboot /usr/bin/python3 /home/user/tester.py

This didn’t work either.

Edit:

ps aux | grep crond 

gives me

user     2259 0.0 0.0.  9436  948 pts/0 S+ 23:39   0:00 grep --color=auto crond

I am unsure how to check if crond is running, or if the user in question is mounted before/after CRON. I’ll try with:

sudo crontab -e 

but that hasn’t worked either.

Running:

pgrep cron

returns 957

Advertisement

Answer

From what I’ve discovered just now, the @reboot syntax seems to depend on what crontab you’re editing. I found that for the system-level /etc/cron.d/ folder, entries there must have a user, just like regular time-based crons.

Thus this worked for me, on Ubuntu 14.04, to run the specified command as root on startup:

@reboot root /home/vagrant/log.sh
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement