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

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

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

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

1 ответ1

1

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

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