Ok, So I've made my script, I dropped it in /etc/cron.hourly then I chmod 777 the file but it won't run (automatically). If I manually run it, it works fine. Do I need to do anything else?
- 309,379
- 3,963
6 Answers
Entries in cron.hourly are run by the run-parts mechanism (man run-parts for more info). And run-parts is choosy about what filenames it considers valid.
For example, giving your script an extension will make it invalid and result in the job not being run. [a-zA-Z0-9_-] are the valid characters, so the '.' makes it invalid.
When adding a job to /etc/cron.hourly ( or .daily, .weekly, etc), always test afterwards that run-parts will actually run it by issuing the command:
run-parts --test /etc/cron.hourly
If by running this command it shows your file it means it worked. Otherwise, if doesn't show anything your file name is not valid.
What was the name of your script?
Why not using crontab ( /etc/crontab ) and use */1 in the hour field. I have used this to run a script every 5 min and it works well:
# m h dom mon dow user command
* */1 * * * user command
- 360
DaithiF's answer should be the right answer.
Also, my script didn't have #!/bin/bash in the first line. Even though the script could be executed with the command line, run-parts rejected it saying "Exec format error".
Changing the file name from scriptname.sh to scriptname and adding the #!/bin/bash into first line enabled my script to run hourly.
- 33,815
- 317
- 2
- 4
Your problem is probably down to the overly open permissions, which allows anybody to edit your file. Try 755 instead.
Looking in the cron entries in your syslog output should confirm this.
- 1,342
In my case I made these errors due to which cron.hourly wont execute my script:
I forgot to check if crond service is running:
systemctl status crondI haven't added new empty line in the very end of my script file like cron's scripts in other folders have.
I created my script file using WinSCP on Windows thus inserted Windows-like EOL symbol, which cron can't interpret correctly. So I needed to execute
sed -i -e 's/\r$//' /etc/cron.hourly/myscriptto fix it.
- 21
- 3
When you run
crontab -l
is this task on the list?
if not, add it
crontab -e
add this line
0 * * * * yourScript
if it is in this list, try to add the path of programing language to the top of your script
Example:
bash: #!/bin/bash
This 2 things always solved my problems :)
- 8,050