运行命令的简单方法是什么,比如说 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
您还可以使用方便的简写,例如tomorrow
或noon
,例如
echo "tweet fore" | at teatime
笔记:这将运行管道左侧的命令立即地- 并且其输出(通过管道传输到at
)将在预定时间运行at
。因此,上述命令计划tweet fore
在下午茶时间运行。
该示例还演示了如何将操作导入到管道中at
。 at -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 来执行cron
、at
等操作:
引入Cron如何操作建议使用gnome-schedule
gui,这比在终端中输入所有垃圾要好得多(特别是对于不是“强大”*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
。