2014-11-29 2 views
1

Мне нужно создать скрипт SSH BASH (на Debian linux), чтобы проверить, запущен ли процесс java.SSH bash скрипт для проверки работоспособности java-процесса?

Вот как это должно выглядеть следующим образом:

IF 'java' process is not running THEN run ./start.sh 

, чтобы проверить, если процесс Java работает, я могу сделать этот тест:

ps -A | grep java 

Этот скрипт должен работать каждую минуту (я предполагаю в CRON)

С уважением

ответ

2

Прежде всего, запустить задание каждую минуту в хронах, ваш кронтаб должен выглядеть следующим образом:

* * * * * /path/to/script.sh

Далее, у вас есть несколько различных вариантов для обнаружения процесса Java.

Обратите внимание, что каждый из следующих является отрицанием: они обнаружить отсутствие Явы:

  • С pgrep:

    if [ ! $(pgrep java) ] ; then 
        # no java running 
    fi 
    
  • С pidof:

    if [ ! $(pidof java) ] ; then 
        # no java running 
    fi 
    
  • С ps и grep:

    if [ ! $(ps -A | grep 'java') ] ; then 
        # no java running 
    fi 
    

Из них pgrep и pidof, вероятно, является наиболее эффективным. Однако не цитируйте меня.

0

С pidof будет так mething так:

script.sh

pidof java; 
if[$? -ne 0]; 
then 
    # here put your code when errorcode of `pidof` wasn't 0, means that it didn't find process 
    # for example: /home/user/start.sh 
    # (please don't forget to use full paths if you want to use it in cron) 
fi 

Специально для ненавистников:

man pidof:

СТАТУС

0  At least one program was found with the requested name. 
    1  No program was found with the requested name. 
1

Проверка, которую вы делаете с PS и GREP, выглядит не очень подробно. Что делать, если выполняются другие процессы Java? Вы можете обнаружить их и прийти к неверному выводу, потому что вы просто проверяете «любую» Java, а не какую-то определенную Java.

Смежные вопросы