Я не могу найти, как правильно структурировать цикл while для записи в текстовый файл всех сбоев данного приложения Linux. Я хотел бы получить подсказку, чтобы я мог ввести имя приложения, а затем цикл для просмотра pid приложения. Если pid - ноль, я хотел записать метку времени в текстовый файл и продолжить цикл. Если на второй итерации все еще находится в нуле, ничего не регистрируйте, продолжайте мониторинг, пока не возникнут другие сбои и другие журналы ... и так далее, пока сценарий не остановится с помощью CTRL + C.
Я попробовал несколько вариантов этого сценария без удачи. Я думаю, что мне нужны советы о том, как придумать «петлевую структуру» для достижения любых целей ...
read -p "What is the name of the application you want to monitor?" appname
pidofapp=`ps -elf | grep "$appname" | grep -v grep | awk '{print $4}'`
pidofappcheck=`ps -elf | grep "$appname" | grep -v grep | awk '{print $4}'`
while :
do
if [[ ! -z "$pidofappcheck" ]] ; then
pidwasnull=true
pidofappcheck=`ps -elf | grep "$appname" | grep -v grep | awk '{print $4}'`
if [[ "$pidofapp" == "$pidofappcheck" ]] ; then
printf "Still monitoring...\n"
sleep 5
elif [[ "$pidwasnull" == true ]] ; then
continue
fi
echo "FAILURE: Crash occurred at: "$(date)" - Crashes will be logged in the monitoring tool directory under results.txt"
date >> ./results.txt
fi
done
Как сейчас, сценарий выдаст эхо:
What is the name of the application you want to monitor?running
Still monitoring...
FAILURE: Crash occurred at: Wed May 22 01:44:53 EDT 2019 - Crashes will be logged in the monitoring tool directory under results.txt
Still monitoring...
FAILURE: Crash occurred at: Wed May 22 01:44:58 EDT 2019 - Crashes will be logged in the monitoring tool directory under results.txt
Заранее спасибо за любую помощь.