如何设置cron在将来的特定时间只运行一次文件?

如何设置cron在将来的特定时间只运行一次文件? 其中一个替代scheme是http://en.wikipedia.org/wiki/At_%28Unix%29,但目前为止,标准托pipe计划中的所有用户都无法访问它。 所以我想知道是否有办法使用cron来做到这一点?

Solutions Collecting From Web of "如何设置cron在将来的特定时间只运行一次文件?"

试试这个在2011年3月30日午夜执行一个命令:

 0 0 30 3 ? 2011 /command 

警告 :正如注释中指出的那样,在cron的标准/默认实现中不支持年份列。 请参阅下面的TomOnTime答案,以便在将来的特定时间在cron的标准实现中运行脚本。

你真的想用at 。 这完全是为了这个目的。

 echo /usr/bin/the_command options | at now + 1 day 

但是,如果您没有,或者您的托管公司不提供访问权限,您可以有一个cron作业包含代码,确保它只运行一次。

设置一个非常特定时间的cron条目:

 0 0 2 12 * /home/adm/bin/the_command options 

下一步/ home / adm / bin / the_command需要确保它只运行一次。

 #! /bin/bash COMMAND=/home/adm/bin/the_command DONEYET="${COMMAND}.alreadyrun" export PATH=/usr/bin:$PATH if [[ -f $DONEYET ]]; then exit 1 fi touch "$DONEYET" # Put the command you want to run exactly once here: echo 'You will only get this once!' | mail -s 'Greetings!' me@example.com 

你真的想用在。 这完全是为了这个目的。

 echo /usr/bin/the_command options | at now + 1 day 

但是,如果你没有,或者你的托管公司不提供访问权限,你可以做一个自我删除的cron条目。

不幸的是,这将删除所有的cron条目。 但是,如果你只有一个,这很好。

 0 0 2 12 * crontab -r ; /home/adm/bin/the_command options 

命令crontab -r将删除您的crontab项。 幸运的是,其余的命令行仍然会执行。

警告:这很危险! 它删除所有的cron条目。 如果你有很多,这将把它们全部删除,而不仅仅是那个有“crontab -r”行的那个!

您可以在/etc/cron.d放置一个crontab文件,它将运行一个脚本来运行您的命令,然后删除/etc/cron.d的crontab文件。 当然,这意味着你的脚本需要以root身份运行。

你的评论意味着你正试图从编程语言中调用它。 如果是这样的话,你的程序是否可以分派一个调用睡眠的子进程然后执行这个工作?

让你的程序计算秒数,直到所需的运行时间,并调用shell_exec("sleep ${secondsToWait) ; myCommandToRun");