我正在尝试运行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:~$
答案 0 :(得分:3)
看看/var/at/jobs
,看看你的工作是否列在那里。 (它可能是基于操作系统的不同目录。)
默认情况下,大多数系统上未启用at
。为了实际执行at
个作业,必须执行atrun命令。
此命令可以通过launchd或cron执行,具体取决于系统。
确切的机制因系统而异,因此您必须阅读at
,atrun
等所有各种联机帮助页,以验证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)执行问题可能会帮助
man at.allow
)systemctrl -a | grep atd
)tail -f /var/log/syslog
(在执行时)journalctl -b | grep atd
(发现here包含其他提示) /etc/security/limits.conf中为(at
运行用户定义的登录数量有限)也可能导致“权限被拒绝”错误。
答案 5 :(得分:0)
当与 at
命令一起使用时,我也遇到了与 echo 相同的问题。但是,如果您尝试使用 >
或 >>
重定向输出,那么它可以完美运行。还可以尝试一些其他系统命令,例如 reboot
、ls > some_text_file
等,以确保 at 命令正常工作。否则试试
sudo systemctl enable --now atd
启用 at
守护进程