每当我需要启用 cron 时,我都会将 cron 文件复制到 spool 文件夹。
cp /home/shantanu/shantanu /var/spool/cron/
chown shantanu:root /var/spool/cron/shantanu
这有用吗?我可能会遇到什么问题吗?
更新:使用 CentOS
答案1
为特定用户禁用某些 cron 作业的官方方法是输入crontab -e -u <user>
并#
在开头放置一个来注释掉。
更新
因为 cron 文件将成为 shell 脚本的一部分。
尝试这个:
crontab -l -u shantanuo > shantanuo.cron
sed -i 's/^/#/' shantanuo.cron
crontab shantanuo.cron
rm -f shantanuo.cron
答案2
它可能工作。但..
正如前面的发帖者所说:不要这样做。使用crontab -e
。直接编辑文件可能有效,但这不是一种稳健的做法。在更新相关组件时,您的内容可能会随时损坏。此外,它的可移植性不强,其他系统可能会将文件存储在不同的地方。这就像自己实现“printf”而不是使用标准 iolib。
所以,不要这样做。
编辑:如果您需要用 shell 脚本生成 crontab,那么只需将您的内容输入其中crontab
(它甚至知道伪文件 '-'!阅读手册页。)。
答案3
为什么不直接使用命令crontab -e
,或者如果您以 root 身份登录,crontab -e -u shantanu
?
答案4
如果您想暂停作业而不必重新启动 cron(这可能会影响每 3 分钟运行一次的作业),您可以使用锁定文件,可以在脚本中轻松创建或删除。
*/3 0 * * * [ ! -f /tmp/job.lock ] && /path/to/job
因此要暂停工作,请使用:
touch /tmp/job.lock
通过以下方式重新启动 cron 内的调度:
rm /tmp/job.lock
这样做的好处是,您可以对不同的作业(或每组作业,如果它们都使用相同的锁文件)使用不同的锁文件,而不必担心中断调度或因编辑(通过脚本或手动)crontab 时出现错误而破坏 cron。