Я пишу простой скрипт bash для выключения tomcat, и если он не останавливается изящно, проверьте, существует ли PID tomcat, и уничтожьте его.
Я передаю имя кота как переменную скрипту, как показано ниже. В некоторых случаях я передаю два или три имени tomcat, поэтому использование FOR LOOP ниже
./shutdown.sh tomcat1
Содержимое скрипта Shutdown.sh
#!/бин/баш
для имени в "$@"
делать
bash /opt/$name/bin/shutdown.sh
сделано
спать 30
для имени в "$@"
делать
process_id=`ps -ef | grep $имя | grep -v grep | awk '{напечатать $2}'`
если [ $process_id ]
тогда
убить -9 $process_id
фи
сделано
echo "Выполнение скрипта завершено"
Когда tomcat изящно выключается, проблем нет. Но когда кот не останавливается, у меня проблемы.
Ниже фрагмент кода, запущенный непосредственно в командной строке, дает мне правильный идентификатор процесса (62457) tomcat. Но один и тот же фрагмент сценария оболочки дает мне три идентификатора процесса (62610,62611,62457).
process_id=`ps -ef | grep $имя | grep -v grep | awk '{напечатать $2}'`
Можете ли вы сообщить мне, почему я получаю три идентификатора процесса в сценарии по сравнению с одним?
Любое другое более легкое предложение УБИТЬ?