cron jobs with the same execution time
Solution 1
For completeness, jobs in e.g. /etc/cron.{hourly,daily,weekly,monthly} are run sequentially. The run-parts script loops over all files in this directory.
02 4 * * * root run-parts /etc/cron.daily
So you can use that in combination with a naming convention (similar to the numbering in /etc/init.d/rc*.d
for example) to make sure jobs run sequentially.
Solution 2
The tasks listed in cron will run in parallel, just as processes usually do. Theres no way of being sure which will start first, and no way in cron to make sure task A has complete before task B starts.
Solution 3
They will run in parallel. You can use the following methods to run the processes sequentially.
# Use a semicolon to run command2 after command1 has completed
02 4 * * * /path/to/command1 ; /path/to/command2
# Use two ampersands to run command2 after command1 has completed successfully.
02 4 * * * /path/to/command1 && /path/to/command2
# Use two vertical rules to run command2 after command1 has completed unsuccessfully.
02 4 * * * /path/to/command1 || /path/to/command2
Solution 4
Cron is a daemon (service) that runs continuously; however, it reads crontabs once a minute.
The exact sequence in which jobs are executed will depend on the implementation of your systems' crond.
The loose files that some distributions put inside /etc/cron.d/ are scanned for their cron timer settings, since these files follow the normal crontab(5) syntax.
What order the individual jobs are executed in depends on the schedule you set for them, obviously.
Related videos on Youtube
Gabriele
Updated on September 18, 2022Comments
-
Gabriele over 1 year
Suppose I have several cron jobs set up to run at the same time: do they execute in parallel or just one after another?
(My case is Debian squeeze with cronjobs put inside /etc/cron.d/mycronjobs).
-
Gabriele about 12 yearsWhat if I have several cron jobs within the same file, set to run at the same time?
-
adaptr about 12 yearsThe exact sequence in which jobs are executed will depend on the implementation of your systems' crond. man cron for details.
-
Gabriele about 12 yearsman cron states nothing about that (at least in Debian).
-
Gabriele about 12 yearsOk then, since I need to be sure my scripts will run one after another, I think I'll go for a "master script" triggered by a cron job, and call any scripts from within the main script.
-
Nicholas about 12 yearsYou can make sure task A has complete before task B starts by listing them on the same line and separating them with a semicolon.
-
Sirch about 12 yearsThat doesnt mean task A has completed successfully. Perhaps you could use a &&, but anything like this should be carried out by a script that is called.
-
Nicholas about 12 yearsYou can use any operands the bash shell supports. Using &&,||, or ; in cron is common practice in my experience.