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