Главная > Управление процессами > disown

disown: Отказ от владения запущенным заданием (когда забыли nohup)

Удаляет уже запущенное задание из списка заданий текущей оболочки, защищая его от завершения (SIGHUP) при закрытии терминала или выходе из системы. Обычно используется, когда команда случайно запущена без `nohup`.

Что такое disown?

Оболочки, такие как Bash, при закрытии терминала отправляют сигнал 'завершиться!' (SIGHUP) всем заданиям, которыми они управляют. `disown` удаляет определенное задание из списка управляемых оболочкой, предотвращая его завершение при закрытии оболочки.

Когда использовать?

  • Когда забыли nohup: Используется, когда запустили долгую задачу без `nohup`, нужно уходить, но задачу нельзя прерывать.
  • Порядок действий: Используется в последовательности: приостановка выполнения (Ctrl+z) -> перевод в фоновый режим (bg) -> отказ от владения (disown).
  • Встроенная команда оболочки: Это не отдельная программа, а встроенная функция оболочки (Bash, Zsh и т.д.).

Основные опции (Оболочка)

При использовании без опций применяется к последнему заданию. Для указания конкретного задания используйте 'номер задания (Job ID)'.

1. Базовое использование и указание цели

2. Сохранение состояния

3. Справка

Сгенерированная команда:

Комбинируйте команды.

Описание:

`disown` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры сценариев использования (обязательные шаблоны)

`disown` используется не отдельно, а в связке с `Ctrl+z` и `bg`.

Предположим ситуацию: запущен бэкап без nohup!

Вы запустили `backup.sh`, и он займет 1 час. Если закрыть терминал, бэкап остановится. Вот как это исправить.

3 шага для спасения (Пошагово)

Введите команды в следующем порядке:

  • 1. Нажмите `Ctrl + z` в запущенном терминале, чтобы временно остановить задание.
  • 2. Введите команду `bg`, чтобы снова запустить остановленное задание в фоновом режиме.
  • 3. Введите команду `disown`, чтобы разорвать связь с оболочкой.

Отделить только определенное задание

disown %2

Отделяет только задание номер 2, проверенное с помощью `jobs`.

Оставить в списке (-h)

disown -h %1

Будет видно при вводе команды `jobs`, но не завершится при закрытии терминала.

Установка

`disown` — это встроенная команда (Built-in) таких оболочек, как Bash и Zsh, поэтому отдельная установка не требуется.

Установка не требуется

Если вы используете терминал Linux, он уже установлен.

Советы и примечания

Полезные советы

  • Job ID против PID: `disown` использует не ID процесса (PID, например: 1234), а номер задания оболочки (Job ID, например: %1). Не забывайте добавлять `%`.
  • Невозможно проверить вывод: `nohup` создает файл `nohup.out`, но `disown` отсоединяет уже запущенное задание, поэтому вывод может быть потерян. Для сохранения вывода потребуется использовать `gdb` или аналогичные инструменты, что усложняет процесс.
  • Как проверить: После `disown` задание исчезает из списка `jobs` (если не использовались опции). Чтобы проверить, жив ли процесс, нужно использовать `ps -ef | grep команда`.

Связанные команды

Функционально схожие или часто используемые команды.



Те же команды в категории