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

nohup: Продолжение выполнения после выхода из системы

Инструмент, который позволяет команде продолжать выполнение, даже если терминал закрыт или SSH-соединение разорвано. Незаменим для запуска длительных задач (запуск сервера, загрузка больших объемов данных, пакетные задания и т. д.) в фоновом режиме.

Что такое nohup?

nohup — это аббревиатура от 'No Hang Up', что означает выполнение команды с игнорированием сигнала отключения (сигнала HUP). Обычно, когда вы закрываете окно терминала, запущенные программы также завершаются, но nohup действует как щит, предотвращая это.

3 ключевые концепции

  • Игнорирование сигнала HUP: Процесс продолжает работать, игнорируя сигнал завершения (SIGHUP), отправляемый системой при выходе пользователя.
  • nohup.out: Если не указан отдельный файл для сохранения, результат выполнения (вывод) автоматически сохраняется в файл `nohup.out`.
  • & (фоновый режим): Сам по себе nohup занимает терминал. Обычно в конце команды добавляют `&`, чтобы отправить ее в фоновый режим.

Основные синтаксис и опции (Shell)

Сам по себе nohup не имеет сложных опций. Вместо этого он используется в сочетании с **выполняемой командой** и **перенаправлением (указанием направления вывода)**.

1. Базовая конфигурация выполнения

2. Управление логами (выводом)

3. Справка

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

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

Описание:

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

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

Примеры сценариев использования

Наиболее часто используемые шаблоны nohup на практике.

Самый простой способ использования

nohup ./backup.sh &

Запускает скрипт в фоновом режиме. Вывод накапливается в `nohup.out`.

Указание имени файла лога (рекомендуется)

nohup python3 app.py > my-app.log 2>&1 &

Сохраняет логи в `my-app.log` вместо `nohup.out`. `2>&1` означает сохранение сообщений об ошибках в тот же файл.

Выполнение без логов

nohup ./heavy-task.sh > /dev/null 2>&1 &

Если вывод не нужен или слишком велик, что может привести к заполнению диска, он перенаправляется в `/dev/null`.

Поиск запущенного процесса nohup

ps -ef | grep app.py

Проверяет запущенные процессы с помощью команды `ps`.

Установка

nohup — это базовая команда, входящая в состав 'GNU Coreutils', и уже установлена почти во всех дистрибутивах Linux.

Проверка установки

В большинстве случаев отдельная установка не требуется. Вы можете проверить статус установки с помощью команды ниже.

Проверка версии

nohup --version

Советы и меры предосторожности

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

  • Уже запущенная задача?: Если вы забыли использовать nohup и запустили команду, вы можете нажать `Ctrl+z`, чтобы остановить ее, затем `bg`, чтобы перевести в фоновый режим, и использовать команду `disown -h %1`, чтобы добиться эффекта nohup.
  • Как завершить: Процесс, запущенный с помощью nohup, не завершается по `Ctrl+c`. Вам нужно найти PID (идентификатор процесса) с помощью `ps -ef | grep [имя]` и завершить его командой `kill -9 [PID]`.
  • Внимание к объему диска: Если долго работающая программа продолжает записывать логи в `nohup.out`, файл может стать огромным и привести к остановке сервера. Регулярно очищайте его или используйте `/dev/null`.

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

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



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