У меня есть сценарий, который будет отслеживать процесс, и если этот процесс умирает, он будет его обновлять. Я хочу, чтобы сценарий отслеживания также убил процесс, если ему сказали, что он дает скрипт отслеживания как сигмер (например). Другими словами, если я убью скрипт отслеживания, он также должен убить процесс, который он отслеживает, а не снова респавнет и выйти.Как перезапустить процесс в bash или убить его по команде?
брусчатки вместе несколько сообщений (которые я думаю, лучшие практики, например, не использовать ПИД-файл), я получаю следующее:
#!/bin/bash
DESC="Foo Manager"
EXEC="python /myPath/bin/FooManager.pyc"
trap "BREAK=1;pkill -HUP -P $BASHPID;exit 0" SIGHUP SIGINT SIGTERM
until $EXEC
do
echo "Server $DESC crashed with exit code $?. Restarting..." >&2
((BREAK!=0)) && echo "Breaking" && exit 1
sleep 1
done
Итак, теперь, если я запускаю этот скрипт в одном Xterm. И затем в другой xterm отправлю сценарий примерно так:
kill -HUP <tracking_script_pid> # Doesn't work.
kill -TERM <tracking_script_pid> #Doesn't work.
Сценарий отслеживания не заканчивается или что-то еще. Если я запустил FooManager.pyc из командной строки, он умрет в SIGHUP и SIGTERM. В любом случае, что я могу делать неправильно здесь, и, возможно, есть совсем другой способ сделать это?
спасибо.
Я полагаю, это интересно как упражнение с использованием bash, но если вы пытаетесь сделать это для чего-то реального, просто получите мастер: http: //ddollar.github.io/foreman/ –