cron jobs with the same execution time
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.
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.
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.
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