Как мне запустить команду с терминала, чтобы терминал не был родителем? - PullRequest
25 голосов
/ 12 мая 2009

Давайте рассмотрим пример команды "example-command".

  1. Я открываю терминал
  2. Я пишу example-command в терминале, а example-command выполняет.
  3. Теперь, если я закрою терминал, example-command тоже погибнет.
  4. Я сейчас пытаюсь с "example-command &", но то же самое поведение.

Как выполнить команду, чтобы при закрытии терминала она не прекращалась?

Ответы [ 8 ]

28 голосов
/ 12 мая 2009

Есть два пути, одинаковые в результате.

  1. Используйте nohup при запуске вашей программы. Например, nohup example-command. Вы можете фон и работать с ним нормально; он просто продолжит работу после вашего выхода.
  2. В качестве альтернативы, как заметил @alamar , если вы используете bash в качестве оболочки, вы можете использовать команду disown К сожалению, насколько я знаю, disown зависит от bash; если вы используете другую оболочку, например tcsh, вы можете ограничиться приведенной выше формой nohup.
11 голосов
/ 12 мая 2009

Пожалуйста, сначала найдите похожие вопросы.

Помимо перечисленных выше способов, вы можете сделать:

setsid command_name

Например:

setsid xclock

Спасибо

7 голосов
/ 12 мая 2009

В Zsh (не bash) вы можете:

example-command &; disown {pid}

или просто

example-command &; disown
5 голосов
/ 12 мая 2009

Можно также использовать команду screen .

1 голос
/ 12 мая 2009

disown - встроенная функция bash. Вы можете создать оболочку для вашей команды, такую ​​как

#!/bin/bash
$1 &
P=`which $1`
disown `pidof ${P}`

Не самый надежный сценарий (любым способом), но может помочь вам в этом. Например:

$./launch_script.sh myProgram

Вы также можете сделать это в исходном тексте программы, если вы ее редактируете.

1 голос
/ 12 мая 2009

Вы также можете использовать команды 'at' или 'batch' и указать текущее время.

1 голос
/ 12 мая 2009

команда-пример nohup

0 голосов
/ 12 мая 2009

Выполнить: пример команды

Нажмите: Control-Z

Пробег: бг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...