Подтвердить что ты не робот

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

Возьмем пример команды "пример-команда".

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Сначала найдите аналогичные вопросы.

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

setsid command_name

Например:

setsid xclock

Спасибо

Ответ 3

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

example-command &; disown {pid}

или просто

example-command &; disown

Ответ 4

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

Ответ 5

nohup example-command

Ответ 6

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

Ответ 7

disown - это встроенный bash. Вы можете создать shellscript-оболочку для своей команды, например

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

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

$./launch_script.sh myProgram

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

Ответ 8

Запуск: пример-команда

Нажмите: Control-Z

Запуск: bg