Вопрос: Можно ли отсоединить процесс от его терминала? (Или, «я должен был использовать экран!») [Дублировать]


Возможный дубликат:
Могу ли я nohup / screen начать процесс? 

В Unix (в частности, Linux) я начал работу в обычной сессии ssh-> bash. Я бы хотел скоро уйти, но теперь понимаю, что работа займет несколько часов.

Если бы я только начал эту работу на экране, я мог бы отделиться и вернуться домой. Но я этого не сделал.

Есть ли способ отключить задание из его сеанса ssh, поэтому я могу выключить свой компьютер (удалив TCP-соединение и убив сеанс ssh), и все же у вас есть программа?

Я не забочусь о его выходе - на самом деле, я перенаправил stdout в файл. Я просто хочу, чтобы это закончилось.


115
2017-07-01 22:16


Источник




Ответы:


Вы можете нажать ctrl-z прервать процесс, а затем запустить bg чтобы он работал в фоновом режиме.

Вы можете показать нумерованный список всех процессов, описанных таким образом, с помощью jobs,

Затем вы можете запустить disown %1 (заменить 1 с номером процесса, выводимым на jobs) для отсоединения процесса от терминала.

Несмотря на название, этот процесс по-прежнему будет принадлежать вам после запуска disown, он будет просто отсоединен от терминала, в котором вы его запустили.

Этот ответ содержит больше информации


154
2017-07-01 22:26



Насколько безопасно попробовать эту процедуру? Любые ошибки? - ndemou


Я считаю, что команда, которую вы ищете, «отключена»,


17
2017-08-19 16:32





Изнутри оболочки bash:

control+z

Затем, чтобы продолжить работу в фоновом режиме:

bg

Позже вы можете ввести jobs  чтобы убедиться, что ваш процесс все еще запущен.


8
2017-07-01 22:23



Разве это не будет убито, когда я закрою свою раковину? - mike
Нет. Ну, по крайней мере, нет, если вы используете bash. Задание будет отсоединено от PPID вашего сеанса ssh и все равно будет работать на сервере в качестве вашего имени пользователя. - Joe
Приведенные выше инструкции приведут к завершению процесса при закрытии оболочки. Вам также необходимо запустить команду «disown» / builtin (это в bash), которая отключит процесс от оболочки и не отправит сигнал HUP процессу при выходе. - Mark
В моей версии bash [3.2.25 (1) -release (i686-redhat-linux-gnu)] я протестировал процесс и не должен был отказываться от работы перед отключением. Детский PID отключен от родительского PID и продолжает работать как мое имя пользователя без перерыва. Я полагаю. - Joe


Когда используешь reptyr внутри экрана вы можете перемещать процесс (или его вывод) в экран.


5
2018-05-16 14:07





использование
nohup command &

Красивый:
root @ index: ~ # nohup / usr / bin / curl localhost / begemot.php &
[1] 894
root @ index: ~ # nohup: игнорирование ввода и добавление вывода к `nohup.out '

и выход из этого терминала, задача продолжена, чтобы продолжить ...

5
2018-05-24 09:23





Используя crtl-Z, затем bg или используя & при запуске, команда не надежна на 100%. Он будет работать в большинстве случаев, но в некоторых случаях может работать не так, как ожидалось (использование ввода-вывода, ...).
Экран - надежное решение.


4
2017-07-01 22:34



Обратите внимание, что retty (pasky.or.cz/~pasky/dev/retty) - это инструмент, который позволяет вам перемещать процесс, выполняющийся за пределами экрана, в экран. Если вы забудете, может быть полезно поставить работу на экран. Затем вы можете безопасно отключить экран без какого-либо риска остановки работы. - radius


Я взялся за создание screen для автоматического запуска при подключении к хостам, которые я использую регулярно, чтобы избежать этой проблемы.

http://tlug.dnho.net/?q=node/239 это один из способов сделать это, хотя есть и другие варианты.

Спасал меня один или два раза, когда я неожиданно отключился в середине сессии и в противном случае забыл начать screen прежде чем я начал что-то длинное.


4
2017-07-01 22:50





Если вы используете bash, вы можете заподозрить с контролем-Z и фоном с bg.

Управление заданиями (от человека bash)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

помощь bg

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the shell's notion of the current
    job is used.

помощь

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.

3
2017-07-01 22:23



Не будет ли это убито, когда я выключу свой компьютер, таким образом отрезая сессию SSH и убив оболочку? - mike
Подождите, вы используете команду на вашем локальном компьютере и используете SSH для ввода / вывода? Или это работает на удаленном компьютере? Если команда запущена на удаленном компьютере, вы должны быть в состоянии выполнить ее настройку и отключить. - Zoredache


Если вы заранее знаете, что хотите, чтобы он работал в фоновом режиме, команда unix в это хороший вариант. Он запускает команды в фоновом режиме в запланированное время, точно так же, как задание cron, которое не повторяется. В зависимости от вашего дистрибутива вам может потребоваться установить его и запустить демона atd.


2
2018-04-04 12:58