82

I have the cron job as shown below, and wanted it to run every 2 hours, but it keeps running every 2 minutes.

Can someone tell me where I'm going wrong?

  
* */2 * * * /path-to-script

1

4 Answers 4

149

An asterisk in the minute (first) field tells it to run every minute, regardless of the other fields.

You need to specify an exact minute to run within the hour. Be that on the hour (0), half past (30), etc..

0 */2 * * * /path-to-script
1
  • that should do it.
    – egorgry
    Jul 21, 2009 at 13:27
15

The correct description of what you had

 * */2 * * * /path-to-script

is "run every minute where the hour is a multiple of 2".

Which means 00:00 to 00:59, 02:00 to 02:59, 04:00 to 04:59, ... and so on. Not quite the same as "run every minute". The solution already given is valid though.

0
15

Off the top of my head, you could try specifying all the hours when it should run:

0 0,2,4,6,8,10,12,14,16,18,20,22 * * * /path-to-script
3
  • 3
    */2 is much cleaner Jul 21, 2009 at 13:39
  • 11
    */2 while cleaner, is not portable... does not work on solaris and likely most other unix variants.
    – ericslaw
    Jul 21, 2009 at 14:26
  • 1
    Good to know. This options has the ability to ignore some of the hours which we may not need to execute the cron.
    – Muneer
    Jun 8, 2014 at 6:35
1

Also you can do this:

0 0-23/2 * * * /path/to/the/script

or if you want to be more specific on every 2 hours, you can use:

0 0,2,4,6,8,10,12,14,16,18,20,22 * * * /path/to/the/script

The hours values should be separated by commas.

1
  • This should be acepted as well: 0 0-23/2 * * *
    – 1n5aN1aC
    Sep 3, 2019 at 16:49

Not the answer you're looking for? Browse other questions tagged .