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 вам необходимо:
Изменить
/System/Library/LaunchDaemons/com.apple.atrun.plist
измените отключенный дочерний узел сtrue
->false
,Выгрузить ток
/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
Проверьте, что это работает с:
echo blah | at now+1
В случае сбоя эхо-кода по другой причине вы должны хотя бы увидеть, что очередь очищается с помощью:
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
по инструкции там есть?