скидка 50% все планы, время ограничено. Начиная с $2.48/mo
осталось 8 минут
Серверы и ОС

Как работает команда nohup в Linux – синтаксис, варианты использования и примеры

Ада Лавгуд By Ада Лавгуд 8 минут чтения Обновлено 14 июля 2024 г.
команда nohup

Если вы разработчик Linux, вы знаете, насколько важна согласованность и надежность ваших сеансов. Длительные процессы в Linux должны продолжаться даже после выхода из сеанса. К счастью, в Linux есть функциональная команда для этой цели. команда nohup позволяет вам поддерживать бесперебойную работу команд в фоновом режиме. Таким образом, это предотвращает потерю данных и экономит драгоценное время. В этом руководстве вы узнаете все, что вам нужно знать о команде nohup в Linux: от ее синтаксиса и опций до практических примеров и устранения распространенных ошибок.

Понимание синтаксиса nohup в Linux

Команда nohup проста в использовании и понятна. Он позволяет вам запускать команды или сценарии в фоновом режиме, поэтому вы можете быть уверены, что они продолжат выполняться даже после выхода из терминала. Вот как его использовать:

nohup [command] [arguments] &

Вам следует заменить [команда] с командой или сценарием, который вы хотите запустить. И [аргумент] любые аргументы или параметры, необходимые команде. & Символ отправляет команду для запуска в фоновом режиме. Давайте посмотрим пример:

nohup myscript.sh &

В этом примере myscript.sh — это bash-скрипт, который продолжит работать, даже если вы закроете терминал. Вывод будет перенаправлен в файл с именем nohup.out по умолчанию, если вы не укажете другой путь.

Изучение возможностей nohup

Хотя сама команда nohup не имеет большого количества опций, понимание того, как эффективно использовать ее с различными командами и методами перенаправления, может повысить ее производительность. Во-первых, давайте посмотрим, как мы можем получить информацию о команде nohup:

nohup –-help 
nohup --version

Эти две команды дадут вам полезную информацию, показывая справочное сообщение и версию nohup.

Запуск процесса с помощью команды nohup

Если вы хотите запустить процесс с помощью команды nohup, вы можете следовать той же структуре, которую я объяснил в последнем разделе:

nohup [command]

Если вы хотите запустить процесс в фоновом режиме, просто добавьте & до конца вашей команды.

Запуск нескольких процессов в фоновом режиме с помощью команды nohup

А что, если вы хотите запустить более одного процесса в фоновом режиме с помощью команды nohup?

nohup bash -c '[command A] && [command B]' &

Заменять [команда А] и [команда Б] с командами, которые вы хотите запускать в фоновом режиме. Представьте, что вы хотите сначала обновить системные пакеты, а затем очистить ненужные файлы, и вы хотите сделать это с помощью команды nohup:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

В этом примере ноуп позволяет процессам обновления и очистки продолжать работу в фоновом режиме. Таким образом, ваши задачи по обслуживанию системы выполняются без необходимости держать терминал открытым.

Перенаправление пользовательского вывода

Результаты этого процесса будут перенаправлены на nohup.out по умолчанию. Но что, если вы хотите получить выходные данные по другому пути? Вот как это можно сделать:

nohup [command] > [/path/to/new/output.txt]

Не забудьте заменить значения в [] с желаемой командой и путем к файлу.

Сочетание nohup с другими командами

nohup можно комбинировать с другими командами и каналами для создания мощных цепочек команд. Давайте посмотрим на пример:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

Здесь находить Команда используется для поиска файлов журналов и grep используется для поиска термина «ОШИБКА». Объединенный вывод перенаправляется на error_logs.txt.

В этом разделе мы рассмотрели наиболее распространенные параметры и варианты использования команды nohup. Освоив эти инструкции, вы сможете эффективно использовать nohup для запуска процессов Linux в фоновом режиме.

Распространенные ошибки и устранение неполадок

Использовать команду nohup в целом просто, но во время этого процесса вы можете столкнуться с некоторыми распространенными ошибками. Понимание этих ошибок и знание способов их устранения могут сэкономить вам время и нервы. Итак, давайте разберемся, что это за распространенные ошибки и как в них ориентироваться:

Доступ запрещен

Эта ошибка возникает, когда сценарий или команда, которую вы пытаетесь запустить, не имеет разрешения на выполнение. Вывод ошибки выглядит следующим образом: nohup: не удалось запустить команду «myscript.sh»: разрешение отклонено

Чтобы решить эту проблему, вам необходимо убедиться, что сценарий или команда имеет правильные разрешения. Вы можете добавить разрешение на выполнение, используя chmod команда:

chmod +x myscript.sh 
nohup ./myscript.sh &

Команда не найдена

Эта ошибка возникает, если команда или сценарий не найдены в указанном месте или недоступны в вашем PATH. Вывод ошибки выглядит следующим образом: nohup: не удалось запустить команду «myscript.sh»: такого файла или каталога нет.

Чтобы устранить эту ошибку, вам следует убедиться, что команда или сценарий существует и находится в правильном каталоге. Возможно, вам потребуется указать абсолютный путь к скрипту:

nohup /path/to/myscript.sh &

Также убедитесь, что команда установлена ​​и доступна в вашем PATH.

Нет вывода

Иногда вы можете заметить, что в терминале или в выходном файле нет вывода. Если команда выдает выходные данные, но вы их не видите, возможно, они были перенаправлены по пути, отличному от файла по умолчанию, или может возникнуть проблема с правами доступа к файлу. Чтобы решить эту проблему, вам необходимо явно указать выходной файл, чтобы обеспечить его правильное перенаправление:

nohup myscript.sh > output.log 2>&1 &

Например, эта команда перенаправляет стандартный вывод и стандартную ошибку в файл с именем output.log.

Скрипт не работает в фоновом режиме

Иногда кажется, что ваш сценарий или команда запущены, но не в фоновом режиме. Причина обычно проста. Возможно, вы забыли добавить & символ в конце команды, чтобы запустить ее в фоновом режиме. Решение также простое: просто убедитесь, что вы это добавили, и все готово.

Зависающий или не отвечающий процесс

Процесс, запущенный с помощью nohup, может зависнуть или перестать отвечать на запросы. Это может произойти, если процесс ожидает ввода или если есть проблемы с ресурсами, к которым он пытается получить доступ. Есть два решения этой проблемы:

  • Проверьте требуемый ввод: Убедитесь, что команда не требует интерактивного ввода.
  • Проблемы с ресурсами: Убедитесь, что команда имеет доступ к необходимым ресурсам (например, файлам, сети).

Перезапись nohup.out

Если вы запускаете несколько процессов в фоновом режиме с помощью команды nohup, вы можете непреднамеренно перезаписать nohup.out файл. Чтобы избежать этой проблемы, вы можете выбрать конкретный путь для каждого процесса. Таким образом, каждый процесс имеет свой уникальный выходной файл, и путь по умолчанию не перезаписывается.

Узнав о распространенной ошибке nohup и ее решениях, вы сможете без проблем использовать команду nohup.

Заключение

Команда nohup — отличный инструмент для любого пользователя Linux, которому необходимо запускать процессы в фоновом режиме, поскольку она гарантирует, что ваши процессы продолжат работать даже после выхода из системы. В этом руководстве мы рассмотрели основной синтаксис, изучили различные варианты и обсудили распространенные ошибки, а также советы по устранению неполадок. Освоение команды nohup позволит вам эффективно управлять долго выполняющимися задачами, что повысит вашу производительность и навыки управления системой.

Если вы разработчик Linux и хотите максимально эффективно использовать возможности Linux, подумайте о переходе на надежный Linux VPS. Наш облачный сервис VPS предлагает круглосуточную поддержку и гарантию безотказной работы в течение 99,95 %, что означает, что ваши приложения всегда работают без сбоев, и вы можете получить помощь в любое время суток. Благодаря надежной инфраструктуре и надежным ресурсам наш VPS создан для удовлетворения потребностей программистов Linux. Кроме того, вы можете предварительно установить предпочитаемый вами дистрибутив Linux, что упрощает и ускоряет установку. Поднимите свои проекты Linux на новый уровень с помощью VPS, который обеспечит необходимую вам мощность и гибкость.

Часто задаваемые вопросы

В чем разница между ноуп и &?

ноуп предотвращает завершение процесса при выходе пользователя из системы, в то время как & запускает процесс в фоновом режиме. С использованием ноуп гарантирует продолжение процесса после выхода из системы и объединяет его с & позволяет ему работать в фоновом режиме.

Почему используется nohup?

ноуп используется, чтобы гарантировать, что команда или сценарий продолжает работать даже после выхода пользователя из системы или закрытия терминала. Это важно для длительных процессов, которые должны оставаться активными без вмешательства пользователя.

Что такое файл nohup out?

The nohup.out file — это файл вывода по умолчанию, в котором nohup перенаправляет стандартный вывод и стандартную ошибку команды. Если другой выходной файл не указан, вывод команды сохраняется в nohup.out в текущем каталоге.

Делиться

Еще из блога

Продолжайте читать.

Лучшие самостоятельные приложения, которые можно запускать с помощью Cosmos Cloud: обложка с панелями приложений вокруг информационной панели Cosmos.
Серверы и ОС

Лучшие приложения для самостоятельного размещения, которые можно запускать с помощью Cosmos Cloud: файлы, медиафайлы, пароли, автоматизация и многое другое!

Возможно, вы настроили Cosmos Cloud и теперь хотите посмотреть, какие приложения хорошо с ним сочетаются, или, может быть, вы еще даже не выбрали Cosmos и просто хотите посмотреть, насколько хорошо он подходит для вашей работы.

Ник СильверНик Сильвер 16 минут чтения
Portainer и Cosmos Cloud для управления приложениями Docker покрыты диаграммой гибридной настройки и неоновыми операциями и блокировками доступа.
Серверы и ОС

Portainer против Cosmos Cloud: лучше всего подходит для управления приложениями Docker

Если вы уже знакомы с Docker и вам просто нужен более простой способ запуска растущего стека приложений, вот краткий ответ на вопрос Portainer и Cosmos Cloud. Портейнер — более сильный выбор для режиссера

Ник СильверНик Сильвер 14 минут чтения
Графика Cosmo Cloud, CasaOS и Umbrel показывает три автономных пути внутри одного абстрактного облачного сетевого мира.
Серверы и ОС

Cosmos Cloud, CasaOS или Umbrel: какая автономная платформа подойдет для вашей установки?

Короткий ответ: CasaOS по-прежнему является самым простым местом для начала, Umbrel имеет самый чистый и тщательно продуманный интерфейс, а Cosmo Cloud имеет больше смысла, если вы хотите более жесткий контроль над doma.

Ник СильверНик Сильвер 11 минут чтения

Готовы к развертыванию? От $2,48 в месяц.

Независимое облако, с 2008 г. AMD EPYC, NVMe, 40 Гбит/с. 14-дневный возврат денег.