Я хотел бы запустить java-процесс ... а затем проверить, работает ли он по-прежнему через 10 секунд из сценария bash.
Есть простой способ сделать это?
Вы можете сделать это немного лучше, используя $!
чтобы получить PID последней выполненной команды, и используя kill -0
чтобы проверить, работает ли он.
#!/bin/sh
java &
PID=$!
sleep 10
if kill -0 $PID; then
echo "running"
else
echo "not running"
fi
Я удивлен, что никто не упомянул "jps". Попытайся!
ну, создайте файл с именем something.sh, замените program на имя вашей программы:
java -jar program
sleep 10
ps aux| grep program
Если выход пуст, значит он перестал работать. Запустите его с помощью sh something.sh.
Сохраните идентификатор процесса Java-процесса, который вы создали (немедленно вызовите его).
PID = $ (pgrep -n java | голова -n 1)
Позже используйте поиск процесса, чтобы найти с помощью PID
ps --no-headers $PID
в этот момент, если $?
равно 0, значит, процесс все еще выполняется. Если он равен 1, процесс завершен.
Спасибо за вопрос. Возможно, вы захотите взглянуть на следующий пример сценария и убедиться, что это то, что вам нужно:
#! / bin / sh
MYPROCESS = 'ваш-Java-процесс'
if ($ (ps aux | grep $ MYPROCESS | grep -v «grep $ MYPROCESS ″ | wc -l)> 0)
затем
echo "Сервис $ MYPROCESS запущен, все в порядке">
еще
echo "$ MYPROCESS не запущен"
фи
Приведенный ниже оператор «if» проверяет, запущен ли процесс, с помощью команды «ps». В операторе if «ps aux» перечисляет текущие запущенные процессы. В следующем разделе выясняется ваш процесс, затем мы исключаем процесс grep из полученного списка ваших процессов и, наконец, подсчитываем количество экземпляров. Если этот результат больше нуля, ваш процесс запущен, иначе - нет.
Надеюсь это поможет...