Команда 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.