Как использовать nohup для процесса, уже запущенного в фоновом режиме - PullRequest
0 голосов
/ 26 октября 2019

Итак, у меня на Unix-терминале запущена работа в фоновом режиме, через некоторое время мне придется закрыть ssh-терминал, и моя работа должна продолжиться и после этого. Как я могу использовать nohup или любой другой возможный вариант для достижения этой цели.

1 Ответ

0 голосов
/ 26 октября 2019

nohup запускает новый процесс. Вы не можете задним числом применить его к процессу, который вы уже запустили.

Однако, если оболочкой, из которой вы запустили задание, является bash, ksh или zsh, тогда disownВстроенный контроль работы может обеспечить то, что вы хотите. Он может либо полностью удалить задание из управления заданиями, либо просто пометить задание, чтобы оно не отправлялось SIGHUP, когда родительская оболочка его получает. Это похоже, но не обязательно идентично эффекту запуска процесса с помощью команды nohup.

Обратите внимание, что ваша работа может по-прежнему иметь проблемы, если какой-либо из ее стандартных потоков подключен к терминалу сеанса,Это то, что nohup обычно превалирует, но disown не может изменить после факта. Обычно вам лучше предвидеть эту необходимость и начинать процесс с nohup, но если вы не настолько предусмотрительны, то, вероятно, ваш следующий лучший выбор - disown.

Обратите внимание, что в качестве заданияуправляющая команда, disown принимает спецификацию задания для определения задания, с которым нужно работать, а не идентификатор процесса. При необходимости вы можете использовать встроенную функцию jobs, чтобы определить подходящую спецификацию задания.

...