2015-05-09 2 views
0

На самом деле, я совершенно новый в списке свойств запуска Mac OS X.mac os x определить рабочий период демона по списку свойств

Я планирую развернуть программу-демон UNIX, чтобы обслуживать моих клиентов только в рабочее время. Например, с 7:00 до 21:00.

Возможно ли использовать только один список свойств ***. Файл plist для его выполнения или мне нужны два отдельных файла списка свойств, чтобы запустить/остановить службы демона?

Просьба сообщить или любое предложение приветствуется!

Огромное спасибо!

Edit:

Да. Я планирую начать и остановить своего демона, используя launchd. Я пытался использовать параметр, например:

<key>ProgramArguments</key> 
<array> 
    <string>myDaemon</string> 
    <string>-e</string> 
    <string>61200</string> 
</array> 
<key>StartCalendarInterval</key> 
<dict> 
    <key>Minute</key> 
    <integer>5</integer> 
    <key>Hour</key> 
    <integer>6</integer> 
</dict> 

Я попытался пройти -e 61200 в качестве параметра, чтобы демон продолжать работать 17 часов, а затем выйти. Но, к сожалению. Этот способ не работает.

+1

Вы можете добавить некоторые детали пожалуйста? Вы имеете в виду, что для запуска запуска и остановки процессов в зависимости от времени суток? Какие параметры в файле * plist * вы планировали использовать?Или вы думали о том, чтобы иметь вторую задачу запуска, которая просто просыпается каждый вечер и убивает другие запущенные задачи, которые были запущены утром? Любая причина, по которой сам сервер не может решить, когда закрыть? Разумеется, если он достаточно умен, чтобы быть сервером, он достаточно умен, чтобы запустить второй поток при запуске, который убивает себя в определенное время окончания? –

+0

Я попытался запустить его в 06:05 утра и продолжать работать 17 часов. но кажется, что это не работает. –

ответ

0

Файл launchd .plist может описывать только при запуске демона, а не в том случае, когда он должен быть остановлен или как долго он должен быть запущен до его остановки.

Ваш демон должен покинуть себя через заданный интервал времени, если это то, что вы хотите.

+0

Возможность установки продолжительности жизни или закрытия в плагине запуска сделает интересный запрос функции для Apple. –

0

Я вижу 3 пути достижения того, что вы описали ...

Вариант 1

В самом вашем сервере, в код запуска, у него установить alarm(), чтобы отправить себе SIGTERM в 17 : 00. Это имеет то преимущество, что оно очень чистое, но имеет тот недостаток, что вам нужно контролировать исходный код сервера, который может и не быть.

Вариант 2

bash Помещенные, или другая, обертка вокруг вашего сервера двоичных и запустить оболочку из launchd. В сценарии оболочки запустите фактический серверный двоичный код в фоновом режиме, а затем подождите до 17:00 перед отправкой SIGTERM на него. Это имеет то преимущество, что не нужно менять исходный код сервера. Небольшой недостаток заключается в том, что для оболочки требуется дополнительный (небольшой) процесс.

Вариант 3

Создайте вторую launchd задачу, которая начинается в 17:00 и отправляет SIGTERM к реальному серверу. Не идеально.

Примечание Желательно, чтобы ваш сервер реализовать обработчик для SIGTERM, в зависимости от того, как вы продолжить с тем, что она закрывает упорядоченно - смывной базы данных, закрытие файлов и т.д.

Смежные вопросы