Возможный дубликат:
Могу ли я отключить / просмотреть уже начатый процесс?
В Unix (в частности, Linux) я начал работу в обычном сеансе ssh-> bash. Я хотел бы поскорее уйти с работы, но теперь понимаю, что работа займет несколько часов.
Если бы я только начал эту работу на экране, я мог бы отсоединиться и пойти домой. Но я этого не сделал.
Есть ли способ отключить задание от его сеанса ssh, чтобы я мог выключить свой компьютер (отключив TCP-соединение и прервав сеанс ssh), но при этом программа продолжала работать?
Меня не волнует его вывод - фактически, я перенаправил stdout в файл. Я просто хочу, чтобы он работал до конца.
Вы можете нажать ctrl-z
чтобы прервать процесс, а затем запустить bg
чтобы он работал в фоновом режиме.
Вы можете показать нумерованный список всех процессов, основанных таким образом, с помощью jobs
.
Тогда ты можешь бежать disown %1
(заменить 1
с выводом номера процесса jobs
), чтобы отсоединить процесс от терминала.
Несмотря на название, процесс по-прежнему будет принадлежать вам после запуска disown
, он просто будет отсоединен от терминала, в котором вы его запустили.
Я считаю, что вы ищете команду "отречься"
Use nohup command & Is beautiful: root@index:~# nohup /usr/bin/curl localhost/begemot.php & [1] 894 root@index:~# nohup: ignoring input and appending output to `nohup.out' and exit of this terminal, a task proceed to be continued...
Изнутри оболочки bash:
control+z
Затем, чтобы продолжить выполнение задания в фоновом режиме:
bg
Позже вы можете ввести jobs
чтобы узнать, работает ли ваш процесс.
Когда используешь рептирь внутри экрана вы можете переместить процесс (или его вывод) на экран.
Я занялся настройкой screen
для автоматического запуска, когда я подключаюсь к хостам, которые использую регулярно, чтобы избежать этой проблемы.
http://tlug.dnho.net/?q=node/239 - это один из способов сделать это, хотя есть и другие варианты.
Спас меня один или два раза, когда у меня было неожиданное отключение в середине сеанса, и в противном случае я забыл бы начать screen
прежде чем я начал что-то длинное.
Использование ctrl-Z, затем bg или использование & при запуске команды ненадежно на 100%. Он будет работать в большинстве случаев, но в некоторых случаях может работать не так, как ожидалось (использование ввода-вывода, ...).
Экран - надежное решение.
Если вы используете bash, вы можете заподозрить с control-Z и background с 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.
Если вы заранее знаете, что хотите, чтобы он работал в фоновом режиме, команда unix в хороший вариант. Он запускает команды в фоновом режиме в запланированное время, как и задание cron, которое не повторяется. В зависимости от вашего дистрибутива вам может потребоваться установить его и запустить демон atd.