Некоторая путаница по поводу nohup

Situation1

команда

  1. find / -name "*.conf"
  2. Ctrl+Z, чтобы приостановить процесс

Situation2

--- hello.sh ---

#! / Bin/ Баш
/bin/sleep 5000

команда
./hello.sh &

Situation3

команда
nohup ./hello.sh &

в конце концов
команда

pstree | less чтобы получить информацию о процессах

|-sshd-+-sshd
|      |-sshd---bash
|      `-sshd---bash-+-find
|                    |-2*[hello.sh---sleep]
|                    |-less
|                    `-pstree

затем я выхожу ssh

Я получаю информацию о pstree в другом ssh

init-|      
     |-2*[hello.sh---sleep]  

вопрос

  1. Почему я бегу hello.sh и использовать nohup приостановить hello.sh, результат будет таким же?
  2. Почему find процесс не появляется как hello.sh процесс? Когда родительский процесс был убит, init процесс будет обладать сиротским процессом.
  3. Нужно ли использовать nohup если я хочу фоновый процесс?

1 ответ

Решение

Я не совсем понимаю ваш вопрос, но я постараюсь объяснить использование nohup:

Со страницы руководства man nohup:

nohup - запустить команду, защищенную от зависаний, с выводом не-tty

Так nohup отключает стандартные входные и выходные потоки от терминала (/dev/null становится входом, выход идет в файл nohup.out), а также защищает приложение от SIGHUP сигналы (сигнал зависания). Это позволяет вам завершить процесс оболочки, из которого вы запустили nohup-ed команда, не убивая этот дочерний процесс.


Аналогичный способ предотвратить уничтожение процесса, когда родительская оболочка завершается, disown:

my_command & disown

Это работает my_command в фоновом режиме и отключает его от родительского процесса, но без выполнения перенаправления ввода-вывода. Это фактически делает команду независимым процессом, более не являющимся дочерним процессом родительской оболочки.


Если вы хотите запустить процесс только в фоновом режиме, но не хотите отсоединять его от текущей оболочки (чтобы он был убит при выходе из родительского процесса), вы можете опустить nohup или же disown и использовать только Баш &:

my_command &
Другие вопросы по тегам