方便地安排命令稍后运行?

方便地安排命令稍后运行?

运行命令的简单方法是什么,比如说 8 小时后?我可以想到这种方法:

nohup bash -c "sleep 28800 ; ./mycommand.sh" &

有没有更“合适”的方法?

答案1

您可以使用该at命令。at稍后执行命令。该at实用程序将从标准输入读取命令并将它们组合在一起作为 at-job,以便稍后执行。

通常,at在 Ubuntu 中默认安装,但如果您的版本不包含它,请通过以下方式安装:

sudo apt-get install at

有关更多信息、选项、示例和其他内容,请参阅man 1 at

相对时间规范的示例(请注意之间的空格+和持续时间):

at now + 8 hours -f ~/myscript.sh

您还可以使用方便的简写,例如tomorrownoon,例如

echo "tweet fore" | at teatime 

笔记:这将运行管道左侧的命令立即地- 并且其输出(通过管道传输到at)将在预定时间运行at。因此,上述命令计划tweet fore在下午茶时间运行。

该示例还演示了如何将操作导入到管道中atat -c这是您可以检查计划操作的方式,您可以方便地列出它们的编号,如下所示:

at -c 3

答案2

是的,您可以设置一个 cron 作业。

例如,如果现在时间是 14:39:00,今天是 8 月 30 日星期五,您可以使用命令在 crontab 文件中添加以下 cron 作业(8 小时后执行)crontab -e

39 22 30 8 5  /path/to/mycommand.sh

更多关于:

答案3

使用基于 Gnome 的 GUI 来执行cronat等操作:

引入Cron如何操作建议使用gnome-schedulegui,这比在终端中输入所有垃圾要好得多(特别是对于不是“强大”*nix/bsd 用户的“普通”Ubuntu 用户)。

使用 Unity Dash(或其他应用程序菜单)运行它来查找计划任务或正在运行gnome-schedule

在基于 Gnome 的 Ubuntu 系统上,应用程序 --> 系统工具中的 Gnome 计划任务工具(来自 gnome-schedule 包)提供了一个图形界面,提示使用 Cron。该项目网站位于http://gnome-schedule.sourceforge.net/;可以从软件中心安装该软件,也可以通过输入

sudo apt-get install gnome-schedule

在终端中。

使用gnome-schedule,对于主目录中的脚本,将使用以下类型的窗口设置新的“at”命令:

在此处输入图片描述

答案4

如果您在 Mac 上运行 Bash,您将在使用该at程序时遇到一些困难。在这种情况下,您可以改进您最初提出的解决方案,

nohup bash -c "sleep 28800 ; ./mycommand.sh" &

有了这个,

nohup bash -c "sleep $(echo '8 * 60 * 60' | bc) ; ./mycommand.sh" &

这是您想要等待多长时间的更易读的形式。在此示例中,8是您想要在运行脚本之前等待的小时数mycommand.sh

相关内容