安排单个事件在将来某个时间发生的简单方法是什么?


15

很多时候,我希望计算机执行一项任务,但现在不执行。例如,我可以让它在30分钟内通知我该离开工作了。或者,也许我希望它从现在起2个小时进行一次复杂的测试,当时我确定大多数人都会离开办公室。

我知道我可以创建一个cron作业以在一天的特定时间运行,但是当我想要的只是诸如“在10分钟内运行此脚本”之类的简单操作时,这似乎是很多工作,此外,我还必须弄清楚从现在开始实际上是X分钟/小时/天的时间,然后在完成后删除cron作业。

当然,我可以只编写此脚本并在后台运行它:

sleep X
do_task

但这似乎很笨拙:我要么为每个任务需要一个新脚本,要么我需要编写和维护一个足以执行我想要的操作的通用脚本,更不用说我必须弄清楚分钟数是几秒钟,几小时或几天

还没有针对这个问题的解决方案吗?


7
我猜你已经越过不运行了吗?
jw013

这似乎很基础...但是您的系统没有任何带有警告的日历/待办事项列表吗?
JoséNunoFerreira

Answers:


27

我使用一个简单的脚本at

#!/bin/bash
# email reminder notes using at(1)...

read -p "Time of message? [HH:MM] " time
read -p "Date of message? [dd.mm.yy] " date
read -p "Message body? " message

at "$time" "$date" <<EOF
echo "$message" | mailx -s "REMINDER" me@gmail.com
EOF

您可以轻松地将其$message发送到,notify-send或者dzen如果您希望桌面通知而不是电子邮件。


9
也可以使用相对时间(+ 2 days)和不同的格式(YYYY-MM-DD)。有关更多详细信息,请参考手册页。
Arcege

是的:我们
对立的人

我通常会要求您快速完成脚本。我最喜欢的安排工作时间的懒惰方式是“现在+ 5分钟”,也可能是数小时或数天。
乔治M

+1,用于脚本和提及dzen和通知发送(我从未听说过)。
2012年

dzen重定向对我不起作用。 unix.stackexchange.com/q/38362/4143
Cory

6

通用的使用方式 at

编写一个脚本,该脚本可以完成您想做的事情。使用所有外部命令的完整路径,将输出记录到适当的日志文件中或通过邮件发送。

测试脚本。

用激活它 at -f YOURSCRIPT -t MMDDhhmm

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.