#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
?