Odpowiedzi:
To tylko nohup
mówi ci, co jest skonfigurowane; wyprowadza to do standardowego błędu, na który przekierowałeś nohup.err
. Możesz uniknąć wiadomości, przekierowując jej standardowe wejście:
nohup bash life.bash > nohup.out 2> nohup.err < /dev/null &
nohup
sprawdza standardowe wejście, standardowe wyjście i standardowy błąd, aby zobaczyć, które są podłączone do terminala; jeśli znajdzie jakieś, które są podłączone, traktuje je odpowiednio (ignorując dane wejściowe, przekierowując dane wyjściowe nohup.out
, przekierowując błąd na standardowe dane wyjściowe) i mówi, co zostało zrobione. Jeśli nie znajdzie niczego, czego potrzebuje do rozłączenia, nie wysyła niczego samodzielnie.
nohup
mówi dokładnie, co robi, że ignoruje dane wejściowe.
Jeśli chcesz uniknąć tej wiadomości, przekieruj stdin z /dev/null
tego w ten sposób
nohup bash life.bash </dev/null >nohup.out 2>nohup.err &
man nohup
„Jeśli standardowym wejściem jest terminal, przekieruj go z nieczytelnego pliku.”
W związku z tym,
nohup: ignoring input and appending output to 'nohup.out'
Robi to, co powinien, niezależnie od wpisów OPCJI , dlatego dane wejściowe są odrzucane.
RÓWNIEŻ Wygląda na to, że redundantnie korzystasz z przekierowania. nohup już tworzy dla ciebie nohup.out, a jeśli wszystko działa OK, stderr również powinien zostać tam przekierowany.
Twoje zdrowie!
nohup
w ogóle sensu ;bash life.bash >life.out 2>life.err </dev/null & disown -h "$!"
robi to samo, używając tylko funkcji wbudowanych w samą powłokę.