Команда 'say' не работает с командой 'at'

372
holmescn

Я использую macOS 10.13.5 и хочу, чтобы Mac сказал что-то, например, текущее время, с помощью atкоманды для указанного времени.

Я уже загрузил atrunдемон, и работает следующая команда:

at now + 1 minute echo "blah" > /tmp/test.txt 

Но когда я использую sayкоманду с atкомандой, она ничего не делает:

at now + 1 minute say 'hello' 

Я хотел бы знать, что случилось. Есть ли журнал или что-то, что я могу сделать, чтобы узнать?

1
Я стал немного одержим этой проблемой, чем я должен быть. Что-то о том, что `say 'не работает без прямого взаимодействия со стандартным выводом, или команда` at` не работает аналогично. JakeGould 6 лет назад 0
@Jake. Могу ли я подумать, что это скорее всего связано с тем, что команда `say` не является частью сеанса входа пользователя (в частности, в контекст начальной загрузки Mach). Демон atrun запускается от имени пользователя root и запускает команду (например, `say`) под соответствующим идентификатором пользователя, но без переключения контекста и, следовательно, не имеет доступа к динамикам. Все это довольно плохо документировано, но есть некоторая информация [здесь] (https://derflounder.wordpress.com/2016/03/25/running-processes-in-os-x-as-the-logged-in-user -из-вне-пользователи-счет /). Gordon Davisson 6 лет назад 1
@GordonDavisson Я пытался запустить launchctl asuser $ (id -u username) / usr / bin / сказать привет как задание для запуска, но все еще не работает. holmescn 6 лет назад 0
Я попытался написать файл plist, который использует WatchPaths для запуска. Я ожидал, что когда я напишу какой-нибудь текст в /tmp/say.txt, lauchd запустит `say -f / tmp / say.txt`, но это не удалось. holmescn 6 лет назад 0
Что странно, что при запуске cron job можно записать `say` в файл .sh, и все работает. Но я попробовал это с командой `at`, но не получилось. holmescn 6 лет назад 0
@holmescn В качестве задания cron команда `say` все равно будет работать от вашего имени. Где, как объясняет Гордон Дэвиссон, команда atrun запускается как root. JakeGould 6 лет назад 0

0 ответов на вопрос