Что такое 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 команда.