Ste*_*ett 103 command-line bash schedule
从现在起 8 小时后运行命令的简单方法是什么?我可以这样想:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Run Code Online (Sandbox Code Playgroud)
有没有更“合适”的方法?
Mit*_*tch 136
您可以使用该at命令。将at在稍后的时间执行命令。该at实用程序应从标准输入中读取命令并将它们组合在一起作为一个工作,以便稍后执行。
通常,at在 Ubuntu 中默认安装,但如果您的版本不包含它,请通过以下方式安装:
sudo apt-get install at
Run Code Online (Sandbox Code Playgroud)
有关更多信息、选项、示例和其他信息,请参阅 中的联机帮助页man 1 at。
相对时间规范的示例(注意+和持续时间之间的空格):
at now + 8 hours -f ~/myscript.sh
Run Code Online (Sandbox Code Playgroud)
您还可以使用方便的简写,如tomorrow或noon,如
echo "tweet fore" | at teatime
Run Code Online (Sandbox Code Playgroud)
注意:这将运行命令来管的左侧立即-和它的输出(被输送到at)将运行at在预定时间。因此,上述命令计划tweet fore在下午茶时间运行。
该示例还演示了如何将操作通过管道传输到at. at -c是检查计划操作的方式,您可以方便地列出它们的编号,例如:
at -c 3
Run Code Online (Sandbox Code Playgroud)
use*_*020 13
将基于 Gnome 的 GUI 用于cron、at等:
CronHowto的引入建议使用gnome-schedulegui,这比在终端中输入所有垃圾要好得多(特别是对于不是“power”*nix/bsd 用户的“普通”Ubuntu 用户。)
通过使用 Unity Dash(或其他应用程序菜单)查找计划任务或运行gnome-schedule.
在基于 Gnome 的 Ubuntu 系统上,应用程序 --> 系统工具中的 Gnome 计划任务工具(来自 gnome-schedule 包)提供了一个图形界面,提示使用 Cron。项目网站在http://gnome-schedule.sourceforge.net/;该软件可从软件中心安装或通过键入
Run Code Online (Sandbox Code Playgroud)sudo apt-get install gnome-schedule在一个终端。
使用gnome-schedule, 对于主目录中的脚本,将使用这种类型的窗口设置一个新的“at”命令:

Rad*_*anu 12
是的,您可以设置 cron 作业。
例如,如果现在时间是 14:39:00,今天是 8 月 30 日星期五,您可以使用以下crontab -e命令在您的 crontab 文件中添加以下 cron 作业(将在 8 小时后执行):
39 22 30 8 5 /path/to/mycommand.sh
Run Code Online (Sandbox Code Playgroud)
更多关于:
检查date循环中的输出。这是一个快速和肮脏的方式做到这一点,就像如果你不能使用at,cron或其他工具。
假设您希望脚本在中午运行:
until [[ $(date +%H:%M) == 12:00 ]]; do
sleep 30
done
./mycommand.sh
Run Code Online (Sandbox Code Playgroud)
假设您希望它明天中午运行(今天对我来说是 11 月 24 日):
until [[ $(date +%d_%H:%M) == "25_12:00" ]]; do
sleep 30
done
./mycommand.sh
Run Code Online (Sandbox Code Playgroud)
以前,这个答案推荐了正则表达式,它有一些陷阱,比如很多特殊字符。它还建议匹配整个日期字符串,这更容易出错,因为它依赖于语言环境。例如,我使用一些法语语言环境格式,因为我住在魁北克,所以如果我忘记了这一点并写until [[ $(date) == "25 12:00" ]],它永远不会匹配,因为法语排序是“日月年,时间”而不是英文“月日时间年” .