通过shell脚本添加一次性计划任务?

通过shell脚本添加一次性计划任务?

我想在给定时间执行一次任务。

我知道我可以使用 crontab -e 将其添加到那里,但我想通过 shellscript 来做到这一点。crontab -e给我一些临时文件来编辑,这是不可预测的。

另外,一旦任务执行,我想再次将其从 crontab 中删除,以确保它不会留下混乱。

那么有没有一种标准化的方法可以通过脚本在我的个人 crontab 中添加/删除条目?

我知道我可以推出自己的系统:有一个每分钟执行一次的脚本,该脚本从文件夹中执行和删除 .sh 文件,并让我的“addtask”脚本在该文件夹中创建 .sh 文件,但在推出我自己的系统之前,我想知道是否有已经是某事了。

如果重要的话,我使用 Mac OS X 和 zsh,但我想使用也可以在其他 *nix 上运行的东西。

答案1

我认为该at命令就是您所追求的。

例如:

echo "mail -s Test mstumm < /etc/group" | at 16:30

/etc/group这将在下午 4:30通过电子邮件向您发送一份副本。

您可以at在这里阅读更多相关内容:http://www.softpanorama.org/Utilities/at.shtml

答案2

添加新的 cron 作业:

newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(crontab -l) <(echo "$newJobSchedule") | crontab -

删除旧的 cron 作业:

oldJob="/path/to/old/script.sh"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) | crontab -

替换过时的 cron 作业:

oldJob="/path/to/old/script.sh"
newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) <(echo "$newJobSchedule") | crontab -

通过使用管道和重定向来避免临时文件。

相关内容