Versuchen Sie, "wait" durch "sleep" zu ersetzen.
Der wait-Befehl wird ignoriert oder funktioniert nicht, wenn das Shell-Skript über cron aufgerufen wird
373
RameshMathur Mulagaleti
Wir haben die Anforderung, den Status des Agenten zu überwachen. Das Skript funktioniert einwandfrei, wenn sh .sh ausgeführt wird, um den Status des Agenten zu erhalten. Es ist 55s erforderlich, um die Ausgabe in eine Datei zu schreiben. Ich habe diesen Befehl verwendet, um das Backend auszuführen und zu warten, bis der Befehl abgeschlossen ist funktioniert nicht, wenn das Skript durch cron geplant ist, es wartet nicht, bis der Befehl abgeschlossen ist
Ich schätze jede Hilfe in dieser Hinsicht
unten sind crontab einträge
########################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
1 Antwort auf die Frage
-1
sebastienvg
Dies wird nicht wie erwartet funktionieren. `wait $!` bedeutet, bis die letzte Hintergrundaufgabe abgeschlossen ist. `sleep $!` bedeutet eine Anzahl Sekunden warten, die der PID der letzten Hintergrundaufgabe entspricht. Wenn eine PID sehr hoch sein kann (über 20.000), möchten Sie diesen Befehl wirklich * nicht * ausführen.
Nathan.Eilisha Shiraini vor 7 Jahren
1
Ja, es braucht mehr Zeit und das, was ich als Beobachter unter dem Befehl finde, wird der Emctl Status Agent 50 Sekunden brauchen, um die Ausgabe von cron zu generieren. Er wartet nicht, bis die Ausgabe in die agent.txt-Datei geschrieben wird emck.sh eine Idee dazu
RameshMathur Mulagaleti vor 7 Jahren
0
Verwandte Probleme
-
3
Kauf eines OEM-Windows für ein MacBook
-
1
Wie kann ich Vista formatieren und erneut installieren, ohne die Original-OEM-Disc zu besitzen?
-
2
Kann ich die 64-Bit-Version auch mit einer Windows 7 Professional 32-Bit-OEM-Lizenz installieren?
-
4
Lohnt sich der Kauf eines Windows 7-Aktualisierungspakets oder sollte ich eine OEM-Kopie kaufen?
-
4
Rechtmäßigkeit der Verwendung einer gebrannten CD mit einem legalen CD-Key?
-
3
Wird durch die Formatierung von HD und die Installation meines eigenen Betriebssystems die Garantie...
-
3
Legal, um eine OEM-Lizenz von Windows 7 in VMWare Fusion zu installieren?
-
5
XP mit Original-Wiederherstellungsdatenträger des Herstellers installieren, mit OEM-Datenträger mögl...
-
1
Wo finde ich das Installationspaket von Dell OEM Windows 7?
-
1
Benötigen Sie eine Lizenz zum Verkauf von Computern, die aus OEM-Komponenten und Windows-OEM hergest...