Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 不执行at命令_Bash_Unix - Fatal编程技术网

Bash 不执行at命令

Bash 不执行at命令,bash,unix,Bash,Unix,我正在尝试运行atbash命令,但它对我不起作用。我可以向队列中添加作业,但在时间结束时它不会运行。我做错了什么 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

我正在尝试运行
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:~$ 

它工作得很好。只是运行在
at
上的命令不会将其输出写入调用它的终端

尝试:

两分钟后您将看到该文件出现。

检查您的邮件:

   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.

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

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

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

具体机制因系统而异,因此您必须阅读
at
atrun
等上的所有手册页,以验证系统上是否真的启用了
at
,以及您是否有权运行作业。在您的系统上通常都有一个ant-allow和一个ant-deny文件,所以您需要同时检查这两个文件。您必须既在允许的文件中,也不在拒绝文件中

除此之外,您还必须确保您的系统上启用了
at
(出于安全考虑,它通常被禁用)。

我发现了这一点

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

# ps -ef | grep atd
root 8231 1 0 18:10 ? 00:00:00 /usr/sbin/atd
如果您没有看到atd正在运行,请使用以下命令启动它:

# /etc/init.d/atd start
为了分析at(d)执行问题,它可能有助于

  • 检查/etc/at.allow和/etc/at.deny以了解存在和内容(请参见
    man at.allow
  • 检查atd假脱机目录的所有者和访问权限 (/var/spool/cron/atjobs,守护进程:守护进程,Ubuntu上的770)
  • 检查atd守护进程是否正在运行(
    systemctrl-a | grep atd
    在Ubuntu上)
  • tail-f/var/log/syslog
    (在执行时)
  • journalctl-b | grep atd
    (找到了,包含进一步的提示)

  • “权限被拒绝”错误也可能是由于在/etc/security/limits.conf中定义了有限的登录次数(针对运行中的
    用户)。

    当与
    at
    命令一起使用时,我也面临同样的问题。但是,如果您尝试使用
    >
    重定向输出,则它可以正常工作。还可以尝试其他一些系统命令,如
    重新启动
    ls>一些文本文件
    等,以确保at命令正常工作。否则试试
    sudo systemctl enable--now atd
    启用
    at
    daemon

    我还没有收到任何新邮件。如果您给出一个绝对路径名如何?可能(1)处的
    正在主目录或其主目录中执行脚本。(我的在我用户的主目录中执行;使用
    /bin/pwd>/tmp/pwd
    进行测试)@sarnold:No-它不工作。时间到了,你的工作是否被取消了(从atq
    )@Hans-PeterE.Kristiansen是的,你说得对。很抱歉回答错误。您是否正在运行诸如、或之类的工具?任何这些都可能限制cron(8)
    运行作业或保存输出。我没有提到我在mac上,因为我认为这并不重要。我现在相信答案可以在这里找到:。我会很快删除这个问题,因为它是重复的。哈!感谢您的反馈;我希望有一个简单的方法来关闭另一个站点上的内容副本,因为这个问题的措辞很好,可能会帮助其他人在将来发现问题。at daemon正在运行?@Leonardo Hermoso:请阅读答案。你知道cent OS 7中/var/at/jobs的位置在哪里吗?
    # /etc/init.d/atd start