Ответы:
Это просто nohup
говорит вам, что это настроено; это выводит это к его стандартной ошибке, к которой вы перенаправили nohup.err
. Вы можете избежать сообщения, перенаправив его стандартный ввод:
nohup bash life.bash > nohup.out 2> nohup.err < /dev/null &
nohup
проверяет его стандартный ввод, стандартный вывод и стандартную ошибку, чтобы увидеть, какие из них подключены к терминалу; если он находит какие-либо подключенные, он обрабатывает их соответствующим образом (игнорируя ввод, перенаправляя вывод в nohup.out
, перенаправляя ошибку в стандартный вывод), и сообщает вам, что он сделал. Если он не находит ничего, что нужно отключить, он сам ничего не выводит.
nohup
говорит вам точно, что он делает, что игнорирует ввод.
Если вы хотите избежать этого сообщения, перенаправьте стандартный ввод с /dev/null
этого
nohup bash life.bash </dev/null >nohup.out 2>nohup.err &
man nohup
«Если стандартный ввод - это терминал, перенаправьте его из нечитаемого файла».
Следовательно,
nohup: ignoring input and appending output to 'nohup.out'
Он делает то, что должен делать, несмотря на записи OPTION , поэтому ввод отбрасывается.
ТАКЖЕ Кажется, вы используете избыточное использование перенаправления. nohup уже создает для вас nohup.out, и, если все работает нормально, stderr также должен быть перенаправлен туда.
Ура!
nohup
;bash life.bash >life.out 2>life.err </dev/null & disown -h "$!"
делает то же самое, используя только функциональность, встроенную в саму оболочку.