I have a centos server and I want to run a job on it at 11PM every 2 days, how do I do that?


2 Answers 2


You can use the following cron arrangement. The fields denote (from left-to-right):
Minute, Hour, Day of Month, Month, Day of Week. The "*/2" in the Day of Month field means "every two days".

0 23 */2 * * insert_your_script_here.sh

  • 1
    It should be added that this line is valid if the user is invoking 'crontab -e', which would edit user's crontab. If somebody wants to use system wide crontab, the user who should run the command must be specified before that command. Other than that, its perfect :)
    – Torian
    Nov 20, 2010 at 19:26
  • 9
    My RHEL's 'man -s 5 crontab' says that '*' is 'first-last', which would expand '*/2' into '1,3,5,7...29,31'. I think that means that the script would run the 31st and the first on months with 31 days, which I don't think is the intended behavior.
    – Luke
    Nov 20, 2010 at 19:59

In general, you need to use crontab to define the task and the run schedule.


crontab -e -u root

This will put you in VI editing root's crontab entry. Then as ewwhite says, enter:

0 23 */2 * * insert_your_script_here.sh

and then [^ESC] ZZ to save the changes.

This is a good first attempt, but this is not quite every alternate day, as it will run on the 30th of the month and then next run on the 2nd of the month. If you really do need it to be every 2nd day, then run the script EVERY night.

0 23 * * * insert_your_script_here.sh

and in the start of the script use

if [ -f /tmp/altday.txt ]; then
  rm /tmp/altday.txt
touch /tmp/altday.txt

This uses a text file to force the script to exit every alternate invocation.


Not the answer you're looking for? Browse other questions tagged or ask your own question.