at命令未执行

时间:2012-05-06 00:15:42

标签: bash unix

我正在尝试运行at bash命令,但它对我不起作用。我可以在队列中添加一个作业,但是在时间结束时它不会运行。我做错了什么?

hpek@melda:~$ cat /usr/lib/cron/at.deny 
hpek@melda:~$ atq
hpek@melda:~$ at now +2 minutes
echo TTTEEEST
job 12 at Sun May  6 02:09:00 2012
hpek@melda:~$ date
Sun May  6 02:10:24 CEST 2012
hpek@melda:~$ atq
12  Sun May  6 02:09:00 2012
hpek@melda:~$ 

6 个答案:

答案 0 :(得分:3)

看看/var/at/jobs,看看你的工作是否列在那里。 (它可能是基于操作系统的不同目录。)

默认情况下,大多数系统上未启用at。为了实际执行at个作业,必须执行atrun命令。

此命令可以通过launchdcron执行,具体取决于系统。

确切的机制因系统而异,因此您必须阅读atatrun等所有各种联机帮助页,以验证at是否真正启用在您的系统上,以及您是否有权在作业中运行。系统上通常有 ant allow ant deny 文件,因此您需要同时检查这两个文件。您必须同时在允许的文件中,并且不在拒绝文件中。

最重要的是,您必须确保系统上已启用at(由于安全问题,通常会禁用它)。

答案 1 :(得分:2)

工作正常。只是与at一起运行的命令不会将其输出写入您调用它的终端。

尝试:

at now +2 minutes
echo TTTEEEST > new_file_test

您会在两分钟内看到该文件。

答案 2 :(得分:1)

我发现了这个here

  

首先确保at守护程序正在使用如下命令运行:

# ps -ef | grep atd
root 8231 1 0 18:10 ? 00:00:00 /usr/sbin/atd
     

如果你没有看到atd运行,请使用以下命令启动它:

# /etc/init.d/atd start

答案 3 :(得分:0)

检查邮件:

   An at - or batch - command invoked from a su(1) shell will
   retain the current userid.  The user will be mailed standard
   error and standard output from his commands, if any.  Mail
   will be sent using the command /usr/sbin/sendmail.  If at is
   executed from a su(1) shell, the owner of the login shell
   will receive the mail.

答案 4 :(得分:0)

分析at(d)执行问题可能会帮助

  1. 检查/etc/at.allow和/etc/at.deny是否存在和内容(请参见man at.allow
  2. 检查atd假脱机目录的所有者和访问权限 (/ var / spool / cron / atjobs,daemon:daemon,在Ubuntu上为770)
  3. 检查atd守护程序是否正在运行(在Ubuntu上systemctrl -a | grep atd
  4. tail -f /var/log/syslog(在执行时)
  5. journalctl -b | grep atd(发现here包含其他提示)

/etc/security/limits.conf中为(at运行用户定义的登录数量有限)也可能导致“权限被拒绝”错误。

答案 5 :(得分:0)

当与 at 命令一起使用时,我也遇到了与 echo 相同的问题。但是,如果您尝试使用 >>> 重定向输出,那么它可以完美运行。还可以尝试一些其他系统命令,例如 rebootls > some_text_file 等,以确保 at 命令正常工作。否则试试 sudo systemctl enable --now atd 启用 at 守护进程