Mac OS X:at 命令不起作用

Mac OS X:at 命令不起作用

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

$ at now + 1 minute
echo 'Test at command'
<EOD>

我看到该作业是使用 at -l 进行调度的。但是,我没有看到回显。

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

答案1

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

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

以 root 身份(例如通过sudo)。完成此操作后,/var/at/将是关键目录(尽管最简单的方法是以 root 身份使用at- 例如,再次通过sudo!-)。

答案2

在 Snow Leopard 中你需要:

  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
    

    然后加载编辑后的版本

    sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
    
  3. 测试其是否适用于:

    echo blah | at now+1
    
  4. 如果回显由于其他原因失败,您至少应该能够看到队列被清除:

    atq
    

答案3

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

首先启用atrun守护进程:

launchctl load -w
/System/Library/LaunchDaemons/com.apple.atrun.plist

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

执行后你将收到输出/var/mail/[your username]

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

答案4

launchctl一步对我来说还不够;Seamus 的评论指给我看最近的答案

TL;DR 是您还需要/usr/libexec/atrun在系统偏好设置 > 安全和隐私 > 完全磁盘访问中添加。

相关内容