Команда wait ігнорується або не працює, коли скрипт оболонки викликається через cron


0

у нас є вимога стежити за статусом агента oem, сценарій працює нормально, коли виконується sh.sh для отримання статусу агента oem, йому потрібно 55 секунд, щоб отримати вихідний файл, записаний у файл, я використовував цю команду для виконання бекенда і чекаю, поки ця команда завершиться, але це не працює, коли сценарій запланований через cron, він не чекає, поки ця команда не завершиться

Вдячні за будь-яку допомогу в цьому плані

внизу - записи кронт

########################OEM Script Monitoring#################################
0,10,20,30,40,50 * * * * /export/home/oraoem/scripts/emck.sh  > /dev/null 2>&1

-- cat emck.sh
#!/bin/bash
cd /export/home/oraoem/scripts
DBALIST="ramesh.mathur@zap.com"; export DBALIST
rm -f agent.exist
ps -ef | grep emagent | grep -v grep  > agent.exist
if [ -s agent.exist ]
then
cd $MY_AGENT_HOME/bin
./emctl status agent > /export/home/oraoem/scripts/agent.txt & echo $!
wait $!

grep "Number of XML files pending upload" /export/home/oraoem/scripts/agent.txt > /export/home/oraoem/scripts/agent6.txt
a=$(awk '{if ($8 >0) print "", $8}' /export/home/oraoem/scripts/agent6.txt)
b=$(grep "Agent is Running and Ready" /export/home/oraoem/scripts/agent.txt)
d=("Agent is Running and Ready")
if [ "$b" != "$d" ]
then
echo "OEM Agent is Not running ... .. " | mail -s "OEM Agent down on `hostname`" $DBALIST
elif [[ $a -gt 3 ]]
then
echo "Number of XML files pending upload : $a" | mail -s "OEM Agent upload problem on `hostname`" $DBALIST
fi
else
echo "OEM Agent down on `hostname`." | mail -s " OEM Agent down on `hostname`" $DBALIST
fi

##echo "OEM Agent is up and running on  `hostname`." | mail -s " OEM Agent up and running on `hostname`" $DBALIST

Відповіді:


-1

Спробуйте замінити "чекати" на "сон"


1
Це не вийде, як очікувалося. wait $!означає зачекати завершення останнього фонового завдання. sleep $!означає зачекати протягом декількох секунд, рівних PID останнього фонового завдання. Враховуючи, що PID може бути дійсно високим (вище 20k), ви не хочете виконувати цю команду.
— Nathan.Eilisha Shiraini

так, це займає більше часу, і що я спостерігач нижче команди, агент emctl статусу знадобиться 50 секунд, щоб генерувати вихід з cron його не чекаючи, поки вихід не буде записаний у файл agent.txt, але той самий скрипт буде працювати нормально, коли я виконую вручну sh emck.sh будь-яка ідея з цього
— приводу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.