ChatGPT解决这个技术问题 Extra ChatGPT

Running a cron job on Linux every six hours

How can I run command every six hours every day?

I tried the following, but it did not work:

/6 * * * * *  mycommand
possible duplicate of How to run crontab for every 2 hours
how about * */6 * * *

P
Peter Mortensen

You forgot a *, and you've too many fields. It's the hour you need to care about

0 */6 * * * /path/to/mycommand

This means every sixth hour starting from 0, i.e. at hour 0, 6, 12 and 18 which you could write as

0 0,6,12,18 * * * /path/to/mycommand

thank your for the response, this is every 6 hours starting what time? the time when the cron is created?
thanks, so if I wanted to run it starting from 15:00 every 6 hours it would be 15 15,23,05,11 * * * /path/to/mycommand ?
Yes, though the first field is the minute, which you've set to 15, so that'll mean 15:15,23:15,05:15 and 11:15. (which isn't every 6th hour btw, you might have meant 0 15,21,3,9 * * *)
B
Brian Agnew

You should include a path to your command, since cron runs with an extensively cut-down environment. You won't have all the environment variables you have in your interactive shell session.

It's a good idea to specify an absolute path to your script/binary, or define PATH in the crontab itself. To help debug any issues I would also redirect stdout/err to a log file.


thanks for the response, but if I declare environment variables inside my sh file like export variable=something I get to still use them inside that same script? and I use date command alot inside the script
@Gandalf - Yes. You can define all your env variables inside the script. That's a good idea since it means your script is standalone and isolated from other stuff you may want to run within cron
P
Peter Mortensen
0 */6 * * * command

This will be the perfect way to say 6 hours a day.

Your command puts in for six minutes!


@ArsenArsen I am pretty sure it was because it doesn't really add anything to the existing accepted answer, wrote 4 years before it.
P
Peter Mortensen

Please keep attention at this syntax:

* */6 * * *

This means 60 times (every minute) every 6 hours,

not

one time every 6 hours.


h
halfer
0 */6 * * *

crontab every 6 hours is a commonly used cron schedule.


What does this answer add that the other answers don't? @rkoots has already mentioned this exact command.
"Commonly used"? Why? Can you elaborate?
P
Peter Mortensen

You need to use *

0 */6 * * * /path/to/mycommand

Also you can refer to https://crontab.guru/ which will help you in scheduling better...


h
halfer

Try:

0 */6 * * * command

. * has to


The last line here doesn't make much sense. Would you consider expanding it?
looks like the answer is incomplete