команда wait игнорируется или не работает, когда скрипт оболочки вызывается через cron

318
RameshMathur Mulagaleti

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

Ценю любую помощь в этом отношении

ниже находятся записи crontab

########################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 '' /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 
0

1 ответ на вопрос

-1
sebastienvg

Попробуйте заменить «ждать» на «спать»

Это не будет работать, как ожидалось. `wait $!` означает ожидание завершения последней фоновой задачи. `sleep $!` означает ожидание в течение количества секунд, равного PID последней фоновой задачи. Учитывая, что PID может быть очень высоким (выше 20 КБ), вы действительно * не * хотите запускать эту команду. Nathan.Eilisha Shiraini 8 лет назад 1
да, это занимает больше времени, и то, что я наблюдатель, находится ниже команды, агенту состояния emctl понадобится 50 секунд, чтобы сгенерировать вывод из cron, он не ждет, пока вывод будет записан в файл agent.txt, но тот же скрипт будет работать нормально, когда я выполню вручную sh emck.sh любая идея на этот счет RameshMathur Mulagaleti 8 лет назад 0

Похожие вопросы