Mac OS X:在命令处不起作用


42

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

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

我看到工作是通过使用-l安排的。但是,我没有看到任何回音。

我猜可能需要将用户添加到at.allow文件中。我在Mac(雪豹)中找不到at.allow。不知道我该怎么做才能在命令中对此进行测试?


我试图从at处读取信息。它提到:“如果文件_PERM_PATH / at.allow存在,则只允许其中提到的用户名在...使用。如果... at.allow不存在,则检查_PERM_PATH / at.deny ..”不知道_PERM_PATH是什么。

对于Apple OSX Leopard,“ at”的PERM_PATH是/ usr / lib / cron。
理查德·霍斯金斯

对于Mac OS X Lion,它是/var/at
Stefan Schmidt,

Answers:


40

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

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

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


我知道您需要以root用户身份才能启用atrun守护程序,但无需以root用户身份运行“ at”命令。(除非这些命令需要root用户。)
Richard Hoskins

1
激活或atrun能否在重新启动后继续存在?
Eric O Lebigot 2011年

根据手册页,是的,但是我还没有尝试过。
Stefan Schmidt,

1
如果/var/at/at.deny为空,则不需要root用户即可在作业中排队,否则可以将用户名添加到/var/at/at.allow
Stefan Schmidt,

我应该先阅读手册页...谢谢!
polym

13

在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
    

1
这是唯一在OSX 10.10 Yosemite上为我工作的软件。
Colin Dean

5

我在OS X Lion上尝试了此方法,它似乎起作用了。

首先启用atrun守护进程:

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

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

执行后,您将在 /var/mail/[your username]

我发现排队的项目batch要花几分钟才能真正执行。


2

其他人则回答说在Mac OS X 被禁用,但我对此一无所知,但是还有另一个问题:您希望echo命令在何处打印其消息?在其他Unix系统,我已经使用它并不会在你给同一个shell窗口打印命令。请记住,运行at作业时,您甚至可能不再登录。

尝试将一些内容写入文件,然后查看该文件是否在正确的时间出现。


手册页指出,输出将被邮寄给您。
Stefan Schmidt,

@Stefan:是的,在1980年代,当邮件在同一台计算机上本地处理时,效果很好,但是我的经验(使用Mac OS X以外的其他类型的Unix)是,如今您不应该期望收到任何邮件。
Thomas Padron-McCarthy

0

我的OS X(10.4)安装说明man at如下:

注意
     在Mac OS X上,默认情况下,at,batch,atq,atm均被禁用。

您是否atrun按照那里的说明启用了?


我试图找到Mac中的atrun。从Web上,另一种选择是将用户添加到at.allow。我也找不到此文件(at.allow)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.