Enable/Disable tasks in Crontab by Bash/Shell

2020-05-24 05:49发布

Is there a way to enable and disable Crontab tasks using Bash/Shell?

So when the user starts Server 1, it will enable the Server 1 Crontab line and so on. And when the user stops Server 1, the Server 1 Crontab line get disabled (#). Is this possible and how?

Thanks in advance

*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check

4条回答
孤傲高冷的网名
2楼-- · 2020-05-24 06:17
SERVERNUM=$1

To enable:

crontab -l | sed "/^#.*Server $SERVERNUM check/s/^#//" | crontab -

To disable:

crontab -l | sed "/^[^#].*Server $SERVERNUM check/s/^/#/" | crontab -

Transcript:

barmar@dev$ crontab -l
*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
barmar@dev$ crontab -l | sed '/^[^#].*Server 1 check/s/^/#/' | crontab -
barmar@dev$ crontab -l
#*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
barmar@dev$ crontab -l | sed '/^#.*Server 1 check/s/^#//' | crontab -
barmar@dev$ crontab -l
*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
查看更多
你好瞎i
3楼-- · 2020-05-24 06:27

I suggest you add your cron jobs to /etc/cron.d for every server one script. Then let the cron script scan for some marker file if the cron job should be executed.

查看更多
在下西门庆
4楼-- · 2020-05-24 06:34

this is a variant, I use a cronjob that loads it self every night. I just edit a file and it gets reloaded at 10pm everynight. You could make the reload happen more often. I keep a directory of files for each of nodes. The trick is make sure that nobody comments out the reload line.

0 22 * * * crontab /home/ME/cron_files/NODE
查看更多
Explosion°爆炸
5楼-- · 2020-05-24 06:41

As a quick and dirty fix, you can enable or disable the execute permission of the appropriate cron script.

E.g. if you like to prevent locate from automatically updating its database (which can be I/O consuming):

cd /etc/cron.daily

sudo chmod a-x locate

This may be against the cron framework, but it is quickly applied and it works in case of immediate needs.

查看更多
登录 后发表回答