If I have multiple files in cron.weekly and one script takes hours to finish. Will it block other scripts in cron.weekly?
I doubt it, based on the results of this crontab on EL7:
51 13 * * * echo start 1 ; sleep 2m ; echo end 1
51 13 * * * echo start 2 ; sleep 2m ; echo end 2
At 13:51, nothing appeared in my mail file. Two minutes later, two different messages appeared, each with the expected “echo” outputs. Thus, they must have run in parallel.
Yes. They’re run from “anacron -s” by default. If you need a job to run in parallel, configure it into /etc/cron.d at an adecuate time on sundays (as you surely know, you can’t use the script directly in cron.d).
Those are two distinct cron jobs. The scripts in /etc/cron.weekly are all run by the same cron job in /etc/crontab.
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.weekly )
I believe that run-parts runs each script in serial, and therefore a long-running weekly script will block.
If you don’t care when you get the output, and have only one long-running script, you can rename it so that it runs last. Otherwise, you’d need to put the long-running job into its own cron entry.
Keith answer applies to CentOS 5 and 6, mine to CentOS 7. In any case, scripts will exec one at a time in alphabetical order.