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 по инструкции там есть?