Crob job excluding some hours - cron

Currently I'm having two cronjobs as following,
0 */6 * * * root job1
0 */2 * * * root job2
I need to avoid running the job2 when job1 is running.
Is there a way to exclude the time (00 00 , 06 00 , etc . . ) from the job2 cron.
Thanks.

No, there's no exclusion syntax. Change job2 to:
0 2,4,8,10,14,16,20,22 * * * root job2

Related

cron job - 2 different jobs scheduling

*/5 * * * * /dev/file1/test/test1/fls/mdm/test1.sh
*/7 * * * * /dev/file1/test/test1/fls/mdm/test2.sh
I have 2 cron jobs - job1 and job2. I need to schedule the second job to run few minutes later than ongoing cron job.
Can anyone guide me how to achieve this?
I entered this after typing crontab -e ->
00 05 * * * * /dev/file1/test/test1/fls/mdm/test1.sh 02 05 * * * * /dev/file1/test/test1/fls/mdm/test2.sh
When I try the below one, it is working.
00 */5 * * * /dev/file1/test/test1/fls/mdm/test1.sh
02 */5 * * * /dev/file1/test/test1/fls/mdm/test2.sh
I'm not sure if I use the second script it will be triggered in different times.
Error Message: errors in crontab file can't install
00 05 * * * * /dev/file1/test/test1/fls/mdm/test1.sh
02 05 * * * * /dev/file1/test/test1/fls/mdm/test2.sh
I guess this should do the job as the first will run at 05 00 am and the second will run at 05 02 am.

Run a cron job every second minute of every hour

I have a cron job that i want to run every second minute of every hour.before i would just run it every minute like
* * * * * /var/www/html/cron.php
but i now need it to run every second minute of ever hour. How can this be done?.
If your operating system is FreeBSD you could use the #every_second for example:
#every_second /var/www/html/cron.php
For other systems, this could work:
Somethinig every hour:
#hourly /var/www/html/cron.php
Or every 45 minutes:
*/45 * * * * /var/www/html/cron.php
From man 5 crontab:
string meaning
------ -------
#reboot Run once, at startup of cron.
#yearly Run once a year, "0 0 1 1 *".
#annually (same as #yearly)
#monthly Run once a month, "0 0 1 * *".
#weekly Run once a week, "0 0 * * 0".
#daily Run once a day, "0 0 * * *".
#midnight (same as #daily)
#hourly Run once an hour, "0 * * * *".
#every_minute Run once a minute, "*/1 * * * *".
#every_second Run once a second.
Also, check this a reference: https://crontab.guru/
In case the system you are using doesn't support the #every_second you could give a try to something like:
* * * * * /var/www/html/cron.php
* * * * * (sleep 30; /var/www/html/cron.php)
Basically, they run at the same time (every minute) but one will wait for 30 seconds before starting, so /var/www/html/cron.php will be called every 30 seconds.
The format for crontab is as follow
m h dom mon dow command
So you can do
0 * * * yourcommand
It will run every hour at 00 minutes
For me, the only solution I could get working is:
2-59/* * * * *
Which translates to simple English as:
At every 60th minute from 2 through 59.
I barely know about cron syntax, so not sure if this is the only way or is at least one of the better ways.

crontab run every 15 minutes between certain hours

Is this correct scheduled to run between 07:00 and 19:00 at every 15 minutes?
*/15 07-19 * * * /path/script
Your command is fine!
To run from 7.00 until 19.45, every 15 minutes just use */15 as follows:
*/15 07-19 * * * /path/script
^^^^ ^^^^^
That is, the content */15 in the minutes column will do something every 15 minutes, while the second column, for hours, will do that thing on the specified range of hours.
If you want it to run until 19.00 then you have to write two lines:
*/15 07-18 * * * /path/script
0 19 * * * /path/script
You can have a full description of the command in crontab.guru: https://crontab.guru/#/15_7-19___
Yes, that's correct.
The entry in crontab would should be:
*/15 7-19 * * * /path/script >/dev/null 2>&1

Set Cronjob to Run Every 5 Minutes From 9:30am to 4:00pm

I need to set a cronjob to run a bash script every 5 minutes, starting at 9:30am until 4:00pm.
I have the following but, it's not quite right...
Cronjob:
*/5 9-16 * * * /path/to/directory/job.sh > /path/to/log/file/job.log 2>&1
What you have there is a line that will run the command every five minutes between 09:00 and 16:55 (all ranges here are inclusive).
What you're trying to achieve can be done relatively simply with three separate crontab lines:
30-59/5 9 * * * /path/to/directory/job.sh > /path/to/log/file/job.log 2>&1
*/5 10-15 * * * /path/to/directory/job.sh > /path/to/log/file/job.log 2>&1
0 16 * * * /path/to/directory/job.sh > /path/to/log/file/job.log 2>&1
The first handles the case between 09:30 and 09:55, the second every five minutes between 10:00 and 15:55, and the final one the single job at 16:00.
Cron doesn't have a syntax for expressing that directly, so you'll need 3 separate lines: one for 9:30-9:55, one for 10:00-15:55, and one for 16:00.
I think this is correct:
30-55/5 9 * * * <command>
*/5 10-15 * * * <command>
0 16 * * * <command>

how to increment a cron expression

I have a starting point for a cron schedule and I want to create a new cron expression after a specified time interval.
For example, I start with a cron expression for 1 job as "0 0 12 * * ?"
I need to create a second cron expression for a second job with an interval of, let's say, 30 mins. So it becomes: "0 30 12 * * ?"
Like that, I want to keep incrementing and create multiple cron schedules for different jobs.
So,
1st job - "0 0 12 * * ?"
2nd job - "0 30 12 * * ?"
3rd job - "0 0 13 * * ?"
4th job - "0 30 13 * * ?"
.
.
.
Is there something like: (cron expression 1) + 30mins = another cron expression ?

Resources