在特定时间执行一次作业

注意: 默认情况下, at 大多数现代发行版都没有安装。

要在比现在更多的时间执行一次作业,在本例中的下午 5 点,你可以使用

echo "somecommand &" | at 5pm

如果要捕获输出,可以通常的方式执行此操作:

echo "somecommand > out.txt 2>err.txt &" | at 5pm

at 了解很多时间格式,所以你也可以这么说

echo "somecommand &" | at now + 2 minutes
echo "somecommand &" | at 17:00
echo "somecommand &" | at 17:00 Jul 7
echo "somecommand &" | at 4pm 12.03.17

如果没有给出年份或日期,则假定下次指定的时间发生。因此,如果你给了今天已经过去的一个小时,它将在明天开始,如果你给了一个已经过去一年的月份,它将在明年开始。

这也和 nohup 一起工作,就像你期望的那样。

echo "nohup somecommand > out.txt 2>err.txt &" | at 5pm

还有一些命令可以控制定时作业:

  • atq 列出所有定时作业( atq ueue)
  • atrm 删除了一个定时工作( atr e m ove)
  • 批处理基本上与 at 相同,但仅在系统负载低于 0.8 时才运行作业

所有命令都适用于登录用户的作业。如果以 root 用户身份登录,系统范围的作业当然会被处理。