Mac OS X: команда не работает

Я собираюсь запланировать работу с помощью команды. Здесь я попробовал следующую команду:

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

Я видел, что работа запланирована с использованием -l. Однако я не увидел никакого эха.

Я думаю, что мне может понадобиться добавить пользователя в файл at.allow. Я не могу найти at.allow в моем Mac (Snow Leopard). Не уверен, что мне нужно сделать, чтобы проверить это в команде?

5 ответов

Решение

Чтобы включить необходимый atrun демон, как man atrun говорит, выполнить:

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

как root (например, через sudo). Как только вы это сделали, /var/at/ будет ключевым каталогом (хотя самый простой способ - это использовать at как корень - например, еще раз, sudo!-).

В 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
    

Я попробовал это на OS X Lion, и это, похоже, работает.

Сначала включите atrun Deamon:

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

Затем добавьте [ваше имя пользователя] в /var/at/at.allow ,

После выполнения вы получите вывод на /var/mail/[your username]

Я считаю, что поставленные в очередь предметы с batch занять несколько минут, чтобы на самом деле казнили.

Другие ответили, что в Mac OS X отключены, и я не знаю об этом, но есть еще одна проблема: где вы ожидаете, что ваша команда echo напечатает свое сообщение? В других системах Unix, которые я использовал, он не печатается в том же окне оболочки, в котором вы дали команду at. Помните, что при выполнении задания at вы можете даже не войти в систему.

Попробуйте вместо этого записать что-нибудь в файл и посмотрите, появится ли этот файл в нужное время.

В launchctlшага мне не хватило; Комментарий Симуса указал мне на более свежий ответ.

TL;DR вам также нужно добавить /usr/libexec/atrun в Системные настройки> Безопасность и конфиденциальность> Полный доступ к диску.

Моя установка OS X (10.4) говорит в man at:

НОТА
     at, batch, atq, atrm отключены по умолчанию в Mac OS X.

Вы включили atrun по инструкции там есть?

Другие вопросы по тегам