Я запускаю демон, который не может быть перезапущен с помощью команды init.d или службы.
Есть ли способ перезапустить процесс, просто передав идентификатор процесса какой-либо команде?
Уничтожение или перенастройка демона без перезапуска.
kill -HUP 1721
. Перезапускает процесс 1721, посылая сигнал зависания.
killall -HUP inetd
Заставляет демона перезагрузить свой конфигурационный файл, посылая сигнал зависания.
killall -1 inetd
Перезапускает inetd, посылая сигнал номер 1, который является сигналом зависания.
Разница между этим примером и предыдущим заключается в том, что сигнал здесь называется по имени, а не по номеру.
Ссылка: http://www.comptechdoc.org/os/linux/usersguide/linux_ugprocesses.html
Вы можете использовать следующую команду
CMD=`cat /proc/1234/cmdline |sed 's/\x0/ /g'` && kill 1234 && `$CMD` &
, где 1234 - идентификатор процесса.
Что делает эта строка, так это то, что сначала она копирует командную строку, которая использовалась для запуска этого процесса, в переменную, затем убивает этот процесс и перезапускает его, используя сохраненную командную строку.
Обновление : вышеуказанная командная строка была обновлена