
Я написал серверную программу для своей компании и теперь хочу, чтобы она работала на сервере Ubuntu.
Я думал о том, чтобы настроить cronjob для перезапуска всей системы раз в неделю (в целях безопасности, для очистки оперативной памяти в случае утечек памяти, которые я до сих пор не обнаружил и т. д.), но я не уверен, как мне поддерживать этот процесс.
Прямо сейчас я делаю
screen
./launch_server
и отсоединение его. Это хороший способ запустить веб-открытую программу на сервере? Нужно ли мне что-то вроде daemontools или runit по какой-либо причине?
решение1
Ваш вопрос на самом деле представляет собой комбинацию двух вопросов:
- Как запустить программу при загрузке?
ИспользоватьВыскочкаилисистемд(скрипт в /etc/init.d
), в зависимости от вашей версии.
- Как мне поддерживать его работоспособность?
Самым простым подходом было бы добавить задание cron, которое проверяет, находится ли имя процесса в состоянии выполнения, и перезапускает его, если это не так. Я бы дополнил это тем, что он отправляет вам электронное письмо, когда обнаруживает, что это так, чтобы вы знали, если с системой происходит что-то, что постоянно ее убивает. Я бы также добавил в программу ведение журнала с отметкой времени, если у нее его еще нет, чтобы вы могли иметь запись о том, когда происходят эти события.
Если возможно, сигнал или условие, вызвавшие его смерть, также должны быть зарегистрированы, чтобы вы могли предотвратить это. Вы даже можете рассмотреть возможность добавления журналов программы в ваши автоматизированные электронные письма.