轻松启用或禁用cron

每当我需要启用crons,我将复制cron文件到假脱机文件夹。

cp /home/shantanu/shantanu /var/spool/cron/ chown shantanu:root /var/spool/cron/shantanu 

这会工作吗? 我可能遇到的任何问题?

更新:使用CentOS

为特定用户禁用某些cron作业的官方方式是键入crontab -e -u <user>并在开始注释时放置一个#


UPDATE

因为cron文件将成为shell脚本的一部分。

尝试这个:

 crontab -l -u shantanuo > shantanuo.cron sed -i 's/^/#/' shantanuo.cron crontab shantanuo.cron rm -f shantanuo.cron 

可能工作。 但..

正如以前的海报说:不要这样做。 使用crontab -e 。 直接编辑文件可能工作,但不是强大的做法。 更新相关组件时,您的资料可能会随时中断。 另外,它不是很便携,其他系统可能会将文件存储在不同的地方。 这就像你自己实现“printf”而不是使用标准的iolib。

所以,不要这样做。

编辑:如果你需要用shell脚本生成crontab,那么只需将你的东西放到crontab (它甚至知道伪文件' – '!阅读手册页)。

为什么不使用命令crontab -e ,或者如果你是以root身份login的, crontab -e -u shantanu

这可能会也可能不会工作取决于您正在使用哪个操作系统(和哪个版本的cron)。 检查一些Linux的箱子,他们的cron手册页说这个

此外,cron会检查每一分钟的spool目录的mod-time(或/ etc / crontab中的modtime)是否已经改变,如果有,cron将检查所有crontabs的modtime并重新载入已更改的modtime。 因此,只要crontab文件被修改,就不需要重新启动cron。 请注意,crontab(1)命令会在更改crontab时更新假脱机目录的modtime。

因此,提供/var/spool/cron目录的mtime更新,然后cron将检查单个crontabs,看看它们是否被更新重新读取它们。

如果我们看一个Solaris 10的盒子,它的cron手册页说这个

cron只在自己的进程初始化阶段和crontab或at命令运行时才检查crontab或命令文件。 这可以减less定期检查新文件或更改文件的开销。

因此,在Solaris 10系统(可能还有其他系统)上,您将不得不使用crontab命令来更改这些文件,并通知cron它应该重新读取它的crontab文件。