Как я могу перезапустить процесс, если в предыдущем запущенном файле процесса(nohup.out) возникло какое-либо исключение с помощью сценария оболочки?

#linux #bash #shell #cron

Вопрос:

У меня есть один файл Jar в каталоге SERVICE_PATH.В настоящее время он запущен .Предположим,произошло какое-либо исключение или ниже исключения ,затем мне нужно отключить текущий процесс, удалить файл nohup.out из каталога и затем перезапустить ту же банку. Ниже приведен мой пример кода.используя приведенный ниже код, некоторое время он работает, но иногда он не работает.

Я запланирую свой autoRestart.sh файл в кронтабе.

Каков наилучший способ сделать это?

 #! /bin/sh
    SERVICE_PATH=/app/application/DataAdapter
    STOPPED_MESSAGE="java.net.UnknownHostException"
    File='/app/application/DataAdapter/nohup.out'
    
    chmod a x "$File"
    processId=$(ps -ef | grep 'dataAdapter' | grep -v 'grep' | awk '{ printf $2 }')
    echo "$processId"
    
    if [ $processId -eq $(ps -ef | grep 'dataAdapter' | grep -v 'grep' | awk '{ printf $2 }')] 
    then
    
        if grep -Fxq "$STOPPED" "$File"
        then
            echo "Process Id New---$processId"
            kill -9 $processId
            rm -rf $File 
            nohup java -jar dataAdapter.jar amp;
        else
            #nohup java -jar dataAdapter.jar amp;
                echo "Msg if not found"
            echo "Process Id New---$processId"
    
        fi
    else
        kill -9 $processId
        rm -rf $File
        nohup java -jar dataAdapter.jar amp;
            echo "processId not found"
    fi
    echo "Task Finished"
    echo $
 

Комментарии:

1. Ваша переменная » if grep -Fxq "$STOPPED" "$File" » используйте STOPPED «» , и вы определили «» переменную STOPPED_MESSAGE

2. Также, предупреждение, для безопасности, при использовании rm команды. Лучше использовать кавычки вокруг $File (например, вашей grep команды), которым предшествует специальная опция -- (см. man rm )

3. Используете ли вы sh или bash ?