当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

运行命令的简单方法是什么?比如说,从现在起8个小时?我可以这样想:

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

还有更多的”proper”方式吗?

最佳解决办法

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

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

sudo apt-get install at

有关更多信息,选项,示例和其他信息,请参阅Ubuntu Manpage Repository

例:

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

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

echo "tweet fore" | at teatime 

警告:这将立即在管道左侧运行命令,但稍后仅显示其输出。该示例还演示了如何将操作传递到at中。 at -c是您可以检查计划操作的方式,您可以方便地列出其编号,如下所示:

at -c 3

次佳解决办法

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

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

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

更多关于:

第三种解决办法

对于cronat等使用Gnome-based GUI:

CronHowto的引入建议使用gnome-schedule gui,它比在终端中输入所有垃圾更好(特别是对于不是”power” * nix /bsd用户的”average” Ubuntu用户)。

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

On Gnome-based Ubuntu systems Gnome Scheduled tasks tool (from the gnome-schedule package) in Applications –> System Tools provides a graphical interface with prompting for using Cron. The project website is at http://gnome-schedule.sourceforge.net/; the software is installable from the Software Center or by typing

sudo apt-get install gnome-schedule 

in a terminal.

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

bash,command-line,schedule,ubuntu

第四种办法

在我发现at是一件事之前,我想出了一个快速和肮脏的方式来做到这一点。

假设你想让脚本在中午运行:

until [[ "$(date)" =~ "12:00:" ]]; do
    sleep 10
done
./mycommand.sh

假设你想让它在明天中午运行(今天是11月24日对我来说):

until [[ "$(date)" =~ "25 12:00:" ]]; do 
    sleep 30
done
./mycommand.sh

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1035.html,未经允许,请勿转载。