связь между терминалом и процессом

В основном, если я закрыл текущий терминал, sub_process также закрываются. Конечно, если я использую приостановить процесс и использую `bg JobID, чтобы разбудить его, процесс разделяется на терминал и запускается в фоновом режиме. Итак, каковы отношения между текущим терминалом и процессом, который запускается терминалом. Они отец-сын или братья? Более того, как я могу использовать командную строку для запуска процесса, который не нужно подключать к терминалу.

0
задан 13 March 2012 в 11:29

2 ответа

Вы правы относительно поведения родительского сына. Процессы, которые Вы запускаете с командной строки, получают свои сигналы от терминального экземпляра. После того как Вы закрываете терминал, он отправит ПОНУКАТЬ (зависание) сигнал к зависимости процессов.

Это очень полезно, когда у Вас есть только один терминал так, чтобы, после того как Вы выходите из системы, он уведомил все процессы, что пользователь вышел из системы, и они должны завершить свое действие. Однако в Вашем случае Вы хотите к процессу (процессам) проигнорировать этот сигнал и продолжить их работу даже после того, как терминал был закрыт. Для этого нам назвали специальную команду nohup то, что необходимо снабдить префиксом регулярную команду (например. nohup gedit).

Можно ли также спросить, где делает вывод, который перешел к консоли, следует за терминалом, закрывается. Ну, файл в Вашем названном корневом каталоге nohup.out создается и весь вывод от процессов будет перенаправлен к нему.

Заметьте, nohup не открывает процесс в фоне, таким образом, необходимо будет все еще добавить и снабдить постфиксом, если Вы захотите его (например. nohup gedit &).

2
ответ дан 13 March 2012 в 11:29

Вы можете использовать команду nohup для предотвращения выхода из дочернего процесса при закрытии терминала. Например, nohup gcalctool. Nohup для "Нет зависания".

0
ответ дан 13 March 2012 в 11:29

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

Похожие вопросы: