问题描述
运行命令的简单方法是什么?比如说,从现在起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
您也可以使用方便的简写,如tomorrow
或noon
,如
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
更多关于:
第三种解决办法
对于cron
,at
等使用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”命令:
第四种办法
在我发现at
是一件事之前,我想出了一个快速和肮脏的方式来做到这一点。
假设你想让脚本在中午运行:
until [[ "$(date)" =~ "12:00:" ]]; do
sleep 10
done
./mycommand.sh
假设你想让它在明天中午运行(今天是11月24日对我来说):
until [[ "$(date)" =~ "25 12:00:" ]]; do
sleep 30
done
./mycommand.sh