Skripte mit nohup im inneren nicht ordnungsgemäß beendet
Wir haben script, das tun, einige Bearbeitung und löst einen job im hintergrund mit nohup. Wenn wir planen, dieses Skript aus einer Oracle-OEM - (oder kann es einen scheduler-job), sehe ich die folgende Fehlermeldung, und zeigen Sie den status als "fehlgeschlagen", aber das Skript ist eigentlich fertig, ohne Frage. So beenden Sie das Skript richtig, wenn die backup-Boden ein job gestartet wird mit nohup?
Remote operation finished but process did not close its stdout/stderr
- Datei: test.sh
#!/bin/bash
# do some processing
...
nohup ./start.sh 2000 &
# end of the script
- Mögliche Duplikate von Wie nohup innerhalb eines bash-Skriptes?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durch ausführen
start.sh
in dieser Art und Weise Sie erlauben es, zu behaupten, Teileigentum dertest.sh
's-Ausgabe, file-Deskriptoren (stdout
/stderr
). Also in der Erwägung, dass, wenn die meisten bash-Skripte beenden, die Datei-Deskriptoren werden geschlossen (durch das Betriebssystem),test.sh
's file descriptors, kann nicht geschlossen werden, weilstart.sh
noch einen Anspruch auf Sie.Die Lösung ist, um nicht lassen Sie
start.sh
behaupten, die gleiche Ausgabe Datei-Deskriptoren alstest.sh
im Einsatz ist. Wenn Sie nicht kümmern, über dessen Ausgang, können Sie starten Sie es so:sagt, der neue Prozess zum senden sowohl seine stdout und stderr zu
/dev/null
. Wenn Sie sorgen über seine Ausgabe, dann nur zu erfassen, es irgendwo sinnvoller: