4

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

Мой вопрос касается компьютера, который выключен. Если машина выключается, когда должно произойти событие launchd, должен ли запуск запускаться при следующем включении питания?

Я спрашиваю, потому что я создал событие (агент?) бегать в 9:45 утра каждый день. Но часто в это время машина выключается. Я не вижу вывод события (отправка электронного письма) после включения компьютера. Поэтому я пытаюсь выяснить, является ли это типичным поведением или я что-то напутал.

2 ответа2

2

Он ограничен заданиями, которые были запланированы во время сна (не при выключении) и параметром StartCalendarInterval (не StartInterval).

Руководство по программированию демонов и сервисов: планирование временных заданий

Если вы запланировали launchd задания, установив ключ StartCalendarInterval и компьютер спит, когда задание должно было выполняться, ваше задание будет запущено, когда компьютер проснется. Однако, если машина выключена, когда задание должно было быть выполнено, задание не будет выполнено до следующего назначенного времени.

Все остальные launchd задания пропускаются, когда компьютер выключен или спит; они не будут работать до следующего назначенного времени.

1

Может случиться так, что событие завершится неудачно, потому что оно запускается до того, как подключение к Интернету полностью установлено.

Вот некоторая информация из статьи Расписание заданий с использованием launchd :

Если ваш компьютер часто спит, он будет спать, когда должны выполняться задания, что означает, что он будет запускать их сразу после пробуждения, возможно, до того, как он подключится к Интернету. Я экспериментировал с KeepAlive и NetworkState, чтобы заставить работу повторяться, пока не будет сетевого подключения. Вы также можете использовать SuccessfulExit для написания сценария, чтобы он возвращал только ненулевой код, означающий «запустить снова через 10 секунд». В любом методе скрипт будет запускаться (и, вероятно, не будет работать) каждые 10 секунд, когда у вас нет подключения к Интернету. Лучше было бы просто поспать 5 секунд в начале вашего сценария. Или вы можете удвоить частоту бега и надеяться на лучшее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .