root213123 schrieb:
Da ich einen anderen Befehl und eine andere Shell verwendet habe, kann ich meine Problemlösung nicht für den normalen Ubuntu-Nutzer empfehlen. Daher folgende Abhilfe für Bash:
| nohup ./script 1> /dev/null 2> /dev/null < /dev/null &
|
Mit "< /dev/null" wird /dev/null als stdin gesetzt. Somit gelangen meine späteren Eingaben nicht in das stdin.
Das löst Dein Problem? Die Umleitungen dürften alle für das Kappen der Verbindung zum Terminal nichts bringen, denn die Manpage von nohup
sagt:
If standard input is a terminal, redirect it from /dev/null. If standard output is a terminal, append output
to 'nohup.out' if possible, '$HOME/nohup.out' otherwise. If standard error is a terminal, redirect it to
standard output. To save output to FILE, use 'nohup COMMAND > FILE'.
(Was im Übrigen auch meine Vermutung widerlegt.)
Übrigens sagt sie auch
NOTE: your shell may have its own version of nohup, which usually supersedes the version described here.
Please refer to your shell's documentation for details about the options it supports.
Das könnte unterschiedliches Verhalten mit einer anderen (welcher?) Shell erklären.
Ich würde es eher mit einem doppelten Fork versuchen, wie Dämonen das machen:
| ( ( nohup sleep 300 ) & ) &
|
Das scheint bei mir zu funktionieren. Wenn ich das Terminal schließe, bleibt der sleep
da und hat kein tty mehr, wie man mit ps
sieht.