Я написал 1 сценарий оболочки для запуска команды Jstack для определенного идентификатора процесса (PID).как включить некоторые команды во время выполнения в сценарии оболочки
Но может случиться так, что на сервере для процесса Java есть несколько PID.
В этом случае я хочу запустить много команд Jstack, предоставляющих соответствующие PID в качестве ввода команды.
Например. Если одно приложение имеет 2 сервера (1 tomcat и 1 jboss), мне нужно запустить 2 команды JStack для захвата 2 разных журналов для 2 процессов.
Итак, как обрабатывать или проверять, чтобы сценарий автоматически определял, сколько PIDs там для java-процесса и будут запускать команды, написанные внутри скрипта?
Мой сценарий получает все ИДП активные по
PID1=$(ps -ef|grep java|grep jboss| awk '{print $2}')
и
PID2=$(ps -ef|grep java|grep tomcat| awk '{print $2}')
после этого я бегу команды Jstack, как
jstack $PID1 > jStack1.txt & and jstack $PID2 > jStack2.txt &
Что ваш вопрос? –
В чем проблема с командой? Не совсем ясно, что вы ожидаете. Если вы можете объяснить, что в настоящее время находится с образцом ввода, и то, что вы ожидаете в результате, поможет. – SMA
Я хочу, чтобы скрипт обнаружил, сколько идентификаторов процесса существует для tomcat и jboss, и, соответственно, должна выполняться команда jstack. Если есть только PID1, тогда запускается jstack $ PID1> jStack1.txt &.Если оба PID1 и PID2 есть, тогда jstack $ PID1> jStack1.txt & должен запускаться для PID1 и jstack $ PID2> jStack2.txt и должен запускаться для PID2. – user3627319