Перекомпиляция и перезапуск демона

219
Wasabi

Я разрабатываю серверный демон. У меня уже есть работающая версия этого сервера, но теперь я собрал новую версию. Как заменить текущий процесс новым?

Могу ли я просто использовать service [daemon-name] restart? Останавливает ли это текущий процесс и запускает новый из того же (теперь обновленного) исполняемого файла? Или это просто перезапустить тот же (теперь устаревший) двоичный файл?

Могу ли я просто запустить новую версию и ожидать, что она заменит старую? Или они будут работать параллельно (не мое намерение)?

Кроме того (хотя это может быть совсем другой вопрос), я смог запустить текущий сервер в качестве демона в своей учетной записи, хотя я не являюсь администратором. Я пытался остановить его, но это запрашивает rootпароль. Есть ли способ сделать это без привлечения моего сетевого администратора?

0

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

1
virtex

Эта serviceкоманда является оболочкой, используемой для запуска скриптов в /etc/init.d. Если вы написали демон и хотите использовать команду service, вам необходимо создать сценарий, который принимает аргументы start, stop и restart для управления вашим демоном, а затем поместить его в /etc/init.d. Его способность запускать, останавливать и перезапускать будет определена в этом сценарии.

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

Чтобы ответить на ваш вопрос о том, как запустить новую версию, вам сначала нужно остановить ту, которая работает. Пока он работает под вашей учетной записью, вы сможете убить его, не требуя root-доступа. Самый простой способ уничтожить запущенный процесс по имени с помощью pkillкоманды:

pkill -x mydaemon 

После этого просто перезапустите ваш демон в обычном режиме. Если вы хотите поместить это в скрипт, вы можете поместить его в каталог ~ / bin или в любое другое место, которое вы обычно используете для хранения скриптов и двоичных файлов. Ваш скрипт может быть таким простым:

#!/bin/bash pidof mydaemon >/dev/null && pkill -x mydaemon /home/wasabi/bin/mydaemon 

Похожие вопросы