Mac OS X:at 命令不起作用

Dav*_*.ca 45 mac unix

我将使用 at 命令来安排作业。在这里,我尝试了以下命令:

$ at now + 1 minute
echo 'Test at command'
<EOD>
Run Code Online (Sandbox Code Playgroud)

我看到作业是通过使用 -l 来安排的。但是,我没有看到回声。

我想我可能需要将用户添加到 at.allow 文件。我在我的 Mac (Snow Leopard) 中找不到 at.allow。不确定我需要做什么来测试这个命令?

Ale*_*lli 44

要启用所需的atrun守护程序,man atrun如上所述,请执行:

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Run Code Online (Sandbox Code Playgroud)

作为根(例如通过sudo)。一旦你这样做了,/var/at/将是关键目录(尽管最简单的方法是at作为 root使用——例如,再次使用sudo!-)。

  • 现在是 2019 年 5 月。这个答案对于一些旧版本的 macos 是正确的,但它不是 Mojave 的完整答案。在 U&amp;L SE 网站上有一个 [当前最新的答案](https://unix.stackexchange.com/a/478840/286615)。 (3认同)

unh*_*rs1 13

在雪豹中,您需要:

  1. 编辑/System/Library/LaunchDaemons/com.apple.atrun.plist,从true->更改禁用的子节点false

  2. 卸载电流/System/Library/LaunchDaemons/com.apple.atrun.plist

    sudo launchctl unload -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    
    Run Code Online (Sandbox Code Playgroud)

    然后加载编辑后的版本

    sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    
    Run Code Online (Sandbox Code Playgroud)
  3. 测试它是否适用于:

    echo blah | at now+1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果回声因其他原因失败,您至少应该能够看到队列被清除:

    atq
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

我在 OS X Lion 上尝试过这个,它似乎有效。

首先启用atrun守护进程:

launchctl load -w
/System/Library/LaunchDaemons/com.apple.atrun.plist
Run Code Online (Sandbox Code Playgroud)

然后将 [您的用户名] 添加到/var/at/at.allow.

执行时,您将在以下位置收到输出 /var/mail/[your username]

我发现排队的项目batch需要几分钟才能实际执行。