There are a couple of approaches for doing this.
One is to create a shell program that launches the jobs in sequence rather than allowing them to run in parallel; e.g.,
Also, you can nice
You can launch the shell program or the individual jobs from cron
at times that won't eat all your resources.
If you refer to the crontab
manual page there is a way to
Jobs can be made to "depend" on, or wait until AFTER other jobs have successfully
completed. Consider the following crontab:
* * * * * ID=job4 FREQ=1d first_command
* * * * * ID=job5 FREQ=1h AFTER=job4/30m second_command
Here, whenever job5 is up to be run, if job4 is scheduled to run within the next 30
minutes (30m), job5 will first wait for it to successfully complete.
(What if job4 doesn't successfully complete? If job4 returns with exit code EAGAIN,
job5 will continue to wait until job4 is retried--even if that won't be within the
hour. If job4 returns with any other non-zero exit code, job5 will be removed from
the queue without running.)
Right around that section of the manual page are other options that may be useful for you.
Hope this helps some.