nohup command syntax:
You can use the nohup command by two ways.
- nohup command
- nohup option
Using nohup with commands
Example-1: Using nohup command without ‘&’
When you run nohup command without ‘&’ then it returns to shell command prompt immediately after running that particular command in the background. In the following example, nohup run bash command without ‘&’ to execute sleep1.sh file in the background. The output of the nohup command will write in nohup.out the file if any redirecting filename is not mentioned in nohup command. For the following command, you can check the output of sleep1.sh by checking the output of nohup.out file.
$ nohup bash sleep1.sh
$ cat nohup.out
You can execute the command in the following way to redirect the output to the output.txt file. Check the output of output.txt.
$ nohup bash sleep2.sh > output.txt
$ cat output.txt
Example-2: Using nohup command with ‘&’
When nohup command use with ‘&’ then it doesn’t return to shell command prompt after running the command in the background. But if you want you can return to shell command prompt by typing ‘fg’
$ nohup bash sleep1.sh &
$ fg
Example-3: Using nohup command to run multiple commands in the background
You can run multiple commands in the background by using nohup command. In the following command, mkdir and ls command are executed in the background by using nohup and bash commands. You can get the output of the commands by checking output.txt file.
$ nohup bash -c ‘mkdir myDir && ls’> output.txt
$ cat output.txt
Example-4: Start any process in the background by using nohup
When any process starts and the user closes the terminal before completing the task of the running process then the process stops normally. If the run the process with nohup then it will able to run the process in the background without any issue. For example, if you run the ping command normally then it will terminate the process when you close the terminal.
$ ping -i 10 google.com
You can check the list of all running command by using pgrep command. Close the terminal. Re-open the terminal and run pgrep command with -a option. No list of running command will display because all running commands are terminated when the terminal was closed.
$ pgrep -a ping
Run ping command with nohup command. Re-open the terminal and run pgrep command again. You will get the list of the process with process id which is running.
$ nohup ping -i 15 google.com &
$ pgrep -a ping
You can stop any background process by running kill command. Just run kill command with particular process id which is running. Here, the process id of the running process is 7015. Run kill command in 7015 to terminate the process.
$ kill 7015
The uses of nohup command are explained by using very simple examples in this tutorial. Hope you will get a clear idea of the function of nohup command and able to apply this command for various purposes.
Nohup через соединение SSH
Одно из применений, которое часто приходит на ум сразу, когда вы изучаете nohup – это возможность запуска процесса на удаленном компьютере через SSH. Логично, что выполнение команды с nohup позволит вам выйти из вашего SSH-соединения, и процесс все равно будет запущен.
nohup COMMAND &
Одна из распространенных проблем заключается в том, что иногда SSH «зависает» при выходе из системы. Это связано с тем, что SSH часто отказывается терять любой поток данных в фоновые процессы и из них. Затем он будет «зависать», пока процесс не будет завершен.
Эту проблему часто можно решить, перенаправив все 3 потока данных.
nohup COMMAND >./nohup.out 2>./nohup.err
Мы надеемся, что эта быстрая статья помогла вам лучше использовать сеансы SSH. Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.
Как запустить процесс в фоне Linux
Для выполнения команды в фоновом режиме достаточно добавить в конце символ амперсанда (&):
В выводе терминала будут отображены порядковый номер задачи (в квадратных скобках) и идентификатор процесса:
В фоновом режиме можно одновременно запускать сразу два, три, четыре процесса и даже больше.
Работая в фоновом режиме, команда все равно продолжает выводить сообщения в терминал, из которого была запущена. Для этого она использует потоки stdout и stderr, которые можно закрыть при помощи следующего синтаксиса:
Здесь >/dev/null 2>&1 обозначает, что stdout будет перенаправлен на /dev/null, а stderr — к stdout.
Узнать состояние всех остановленных и выполняемых в фоновом режиме задач в рамках текущей сессии терминала можно при помощи утилиты jobs c использованием опции -l:
Вывод содержит порядковый номер задачи, идентификатор фонового процесса, состояние задачи и название команды, которая запустила задание.
В любое время можно вернуть процесс из фонового режима на передний план. Для этого служит команда fg:
Если в фоновом режиме выполняется несколько программ, следует также указывать номер. Например:
Для завершения фонового процесса применяют команду kill с номером программы:
Пример использования команды Nohup
Выполнение скрипта с помощью nohup так же просто, как это.
Обратите внимание, что nohup не развил процесс в фоновом режиме. Nohup предназначен только для перехвата сигналов SIGHUP. После запуска команды вы можете продолжить и закрыть свой терминал. Он предупредит вас, что процесс запущен. Подтвердите, что хотите убить его. Когда вы закрыли свой терминал, все дочерние процессы получили сигнал SIGHUP
Nohup помешал этому сигналу достичь нашей команды. На следующем рисунке показана информация о нашей команде, пока терминал еще работал
Когда вы закрыли свой терминал, все дочерние процессы получили сигнал SIGHUP. Nohup помешал этому сигналу достичь нашей команды. На следующем рисунке показана информация о нашей команде, пока терминал еще работал.
Вы видите PPID? Это идентификатор родительского процесса. Когда вы запросили закрыть терминал, все дочерние элементы PPID получили сигнал SIGHUP. Nohup не дал этому сигналу дойти до нашего сценария. Родительский процесс завершен, и наш сценарий осиротел. Когда процесс становится осиротевшим, он автоматически получает 1 (systemd или init) в качестве родителя.Как видите, продемонстрировать использование nohup не сложно. Очень простая команда. Вы можете разветвлять процесс в фоновом режиме следующим образом:
Вы также можете решить, куда будет перенаправлен вывод:
Обратите внимание, что если вы выключите или перезагрузите систему Linux, она убьет команду. Когда вы запрашиваете завершение работы или перезагрузку, все процессы получают SIGTERM, а затем SIGKILL . Эти сигналы не будут перехвачены Nohup
Пример использования команды Nohup
Выполнение скрипта с помощью nohup так же просто, как это.
nohup ./nhp.sh
Обратите внимание, что nohup не развил процесс в фоновом режиме. Nohup предназначен только для перехвата сигналов SIGHUP. После запуска команды вы можете продолжить и закрыть свой терминал. Он предупредит вас, что процесс запущен. Подтвердите, что хотите убить его.
Когда вы закрыли свой терминал, все дочерние процессы получили сигнал SIGHUP. Nohup помешал этому сигналу достичь нашей команды. На следующем рисунке показана информация о нашей команде, пока терминал еще работал.
Вы видите PPID? Это идентификатор родительского процесса. Когда вы запросили закрыть терминал, все дочерние элементы PPID получили сигнал SIGHUP. Nohup не дал этому сигналу дойти до нашего сценария. Родительский процесс завершен, и наш сценарий осиротел. Когда процесс становится осиротевшим, он автоматически получает 1 (systemd или init) в качестве родителя.
Как видите, продемонстрировать использование nohup не сложно. Очень простая команда. Вы можете разветвлять процесс в фоновом режиме следующим образом:
nohup ./nhp.sh &
Вы также можете решить, куда будет перенаправлен вывод:
nohup ./nhp.sh >/path/to/file &
Обратите внимание, что если вы выключите или перезагрузите систему Linux, она убьет команду. Когда вы запрашиваете завершение работы или перезагрузку, все процессы получают SIGTERM, а затем SIGKILL . Эти сигналы не будут перехвачены Nohup
команда linux nohup
http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>yle=»margin-bottom:5px;»>Теги: linux nohup
Во-первых, служебный скрипт запуска компании linnux
Теперь объясните приведенную выше команду
Цель: Запускать команды без зависания. Синтаксис: команда nohup Описание: команда nohup запускает команду, указанную параметром Command и любыми связанными параметрами Arg, игнорируя все сигналы зависания (SIGHUP). После выхода из системы используйте команду nohup для запуска программы в фоновом режиме. Чтобы запустить команду nohup в фоновом режиме, добавьте & (символ «и») в конец команды.
В операционных системах обычно используются три потока: 0: стандартный поток ввода stdin 1: стандартный выходной поток stdout 2: стандартный поток ошибок stderr
Обычно, когда мы используем> console.txt, это фактически пропущенное использование 1> console.txt; <console.txt фактически пропущенное использование 0 <console.txt.
Войдите в основную тему ниже:
Затем Nohup выполняет последний jar без зависания, а затем выводит стандартный поток ошибок в файл itp-appService.fileh
Интеллектуальная рекомендация
19.03.21 Я загрузил комплексные обучающие видеоуроки Photoshop CC 2015 и обучающие видеоуроки по новым функциям PS CC 2015. Я просмотрел несколько видео, но мне кажется, что они в основном объясняют н…
…
проверка данных весеннего mvc Два способа проверки данных Spring MVC: 1.JSR303 2.Hibernate Validator Второй метод является дополнением к первому методу Шаги для проверки данных с использованием Hibern…
Существует два способа вызова между сервисами Springcloud: RestTemplate и Feign. Здесь мы представляем сервисы вызова RestTemplate. 1. Что такое RestTemplate RestTemplate — это структура веб-запросов …
1. Понимать предварительный, средний, последующий порядок и иерархическую последовательность бинарных деревьев; Свяжите язык C со структурой данных двоичного дерева; Освойте с…
Вам также может понравиться
Последнее обучение, как использовать Kaldi, чтобы проснуться без использования WSTF, поэтому вам нужно глубоко пойти в Kaldi для обучения. Временное состояние обучения. Три изображения представляют со…
Во время простоя некоторые веб-страницы, которые мы создали, не были завершены, но не хотят, чтобы другие видели, вы можете создать простой эффект шифрования страницы на странице этой веб-страницы, ан…
Расширенные статьи серии Zookeeper 1. NIO, ZAB соглашение, 2PC представления концепции 2. Лидер выборов 3. Рукописный распределенный замок, центр настройки ==================================== 1. NIO,…
Посмотрите на конечный эффект первым DemoPreview.gif SETP1 эффект капли воды Первая реакция на эффект капли воды — нарисовать замкнутую кривую. С помощью события MotionEvent измените радиус во время п…
…
Что такое команда nohup?
Nohup можно рассматривать как обертку. Префикс вашей команды с nohup:
Цель Nohup в том чтобы перехватить и предотвратить SIGHUP сигналы от достижения команды.
Когда вы префиксируете свою команду nohup, ввод будет перенаправлен из нечитаемого файла ( nohup COMMAND </dev/null ). Проще говоря, не вызывайте команду с nohup, если вам нужно отправить входные данные для этой команды. Когда вы запускаете команду Nohup, он должен быть в состоянии работать без присмотра.
Nohup сначала попытается перенаправить вывод в ./nohup.out или отправит его в ~/nohup.out, если это будет необходимо. Вы также можете решить, куда перенаправить вывод следующим образом:
О nohup говорить особо нечего, у него нет длинного списка опций. Есть только –help и –version.
Команда chgrp Linux
Стандарт прав файлов пришёл в Linux из Unix. У каждого файла есть владелец (user) и группа (group), помимо этого описываются права остальных пользователей (other). Права состоят из трёх пунктов: чтение (read), запись (write), выполнение (execute). Для изменения прав используется команда umask, но для изменения непосредственно владельца и группы используются команды chown и chgrp. Для просмотра текущих прав можно использовать команду ls.
Синтаксис и опции chgrp
Общий вид команды chgrp:
$ chgrp новая_группа имя_файла
Список распространённых параметров команды chgrp:
- -h – работать непосредственно с самими символьными ссылками, а не с файлами, на которые они ссылаются;
- —dereference – работать с файлами, а не самими символьными ссылками. Используется по умолчанию;
- -R – рекурсивная обработка каталога со всем его содержимым;
- -H – перейти по символической ссылке и изменить атрибуты файла/каталога. Сама ссылка остаётся без изменений. Используется вместе с параметром -R;
- -L — перейти по символической ссылке и продолжить рекурсивную обработку. Сама ссылка остаётся без изменений. Используется вместе с параметром -R;
- -P – при встрече с символьной ссылкой обрабатывать только её. Используется вместе с параметром -R, является значением по умолчанию;
- —reference=имя_образца – использовать группу образца. Используется вместо новая_группа;
- -c – при обработке выводить только изменения;
- -v – выводить информацию о каждом обработанном файле.
Использование команды chgrp
Рассмотрим сразу несколько случаев использования, с реальным файлом и каталогом, а затем с символическими ссылками на них. Простейший пример использования команды chgrp без параметров. Следующая команда меняет группу на www-data для файла file в текущей папке:
А эта меняет группу на www-data для папки folder:
С реальными файлами и каталогами команда работает весьма предсказуемо, меняя их группу. Файлы в папке остаются неизменными. Если же обрабатывать символические ссылки, то их атрибуты останутся неизменными, а файлы получат новую группу. Такое поведение аналогично работе с параметром —dereference. Например, эти команды, применённые к символическим ссылкам, отработают как показано на снимке:
Теперь посмотрим на то, как будет работать параметр -h, меняющий атрибуты символической ссылки:
С параметром -h изменились только атрибуты ссылок, а не сами файлы. Теперь рассмотрим работу c параметром -R, предназначенным для рекурсивной обработки каталогов:
Новая группа была задана не только каталогу, но и всем файлам внутри
Обратите внимание на то, что поведение изменилось, теперь при обработке символической ссылки атрибуты выставляются для самой ссылки, а не файла
Чтобы увидеть разницу между параметрами -H и -L, рассмотрим ещё пару примеров. Напомним, что их надо использовать совместно с параметром -R:
С использованием параметра -H поведение при обработке символических ссылок изменилось, теперь они обрабатываются так, как будто команды выполняются по отдельности. Атрибуты ссылок не меняются, меняются атрибуты самих файлов, при переходе на каталог рекурсивная обработка прекращается.
С использованием параметра -L при переходе к папке по символической ссылке рекурсивная обработка не прекращается
Обращаем ваше внимание на то, что параметры -H и -L использовать небезопасно, они могут дойти до системных файлов
Что такое команда nohup?
Nohup можно рассматривать как обертку. Префикс вашей команды с nohup:
nohup COMMAND ARGS ....
Цель Nohup в том чтобы перехватить и предотвратить SIGHUP сигналы от достижения команды.
Когда вы префиксируете свою команду nohup, ввод будет перенаправлен из нечитаемого файла ( nohup COMMAND </dev/null ). Проще говоря, не вызывайте команду с nohup, если вам нужно отправить входные данные для этой команды. Когда вы запускаете команду Nohup, он должен быть в состоянии работать без присмотра.
Nohup сначала попытается перенаправить вывод в ./nohup.out или отправит его в ~/nohup.out, если это будет необходимо. Вы также можете решить, куда перенаправить вывод следующим образом:
nohup COMMANDS >/path/to/output/file
О nohup говорить особо нечего, у него нет длинного списка опций. Есть только –help и –version.
Альтернативы
Есть несколько альтернативных программ, которые можно использовать, чтобы избежать завершения команды при закрытии терминала или отключении.
Screen
Экран или GNU Screen — это программа-мультиплексор терминала, которая позволяет запускать сеанс экрана и открывать любое количество окон (виртуальных терминалов) внутри этого сеанса. Процессы, запущенные в Screen, будут продолжать работать, если их окно не отображается, даже если вы отключитесь.
Tmux
Tmux — это современная альтернатива экрану GNU. С помощью Tmux вы также можете создать сеанс и открыть несколько окон внутри этого сеанса. Сеансы Tmux являются постоянными, что означает, что программы, запущенные в Tmux, будут продолжать работать, даже если вы закроете терминал.
disown
— это встроенная оболочка, которая удаляет задание оболочки из управления заданиями оболочки. В отличие от , вы также можете использовать для запущенных процессов.
Как использовать команду nohup
Синтаксис команды следующий:
Команда не принимает никаких других параметров, кроме стандартных и .
Давайте посмотрим на следующий пример:
запускает команду на переднем плане и перенаправляет вывод файл . Этот файл создается в текущем рабочем каталоге . Если пользователь, выполняющий команду, не имеет прав на запись в рабочий каталог, файл создается в домашнем каталоге пользователя.
Если вы выйдете из системы или закроете терминал, процесс не завершится.
Запуск команды в фоновом режиме
Использование на переднем плане не очень полезно, потому что вы не сможете взаимодействовать с оболочкой, пока команда не завершится.
Чтобы запустить команду в фоновом режиме , добавьте символ в конце команды:
Вывод включает идентификатор задания оболочки (в скобках) и идентификатор процесса:
Вы можете использовать идентификатор задания, чтобы вывести команду на передний план с помощью команды .
Если по какой-то причине вы хотите прервать процесс, используйте команду за которой следует идентификатор процесса:
Перенаправление вывода в файл
По умолчанию перенаправляет вывод файл . Если вы хотите перенаправить вывод в другой файл, используйте стандартное перенаправление оболочки.
Например, чтобы перенаправить стандартный вывод и стандартную ошибку на вы должны использовать:
Чтобы перенаправить стандартный вывод и стандартную ошибку в разные файлы:
Nohup через соединение SSH
Одно из применений, которое часто приходит на ум сразу, когда вы изучаете nohup – это возможность запуска процесса на удаленном компьютере через SSH. Логично, что выполнение команды с nohup позволит вам выйти из вашего SSH-соединения, и процесс все равно будет запущен.
Одна из распространенных проблем заключается в том, что иногда SSH «зависает» при выходе из системы. Это связано с тем, что SSH часто отказывается терять любой поток данных в фоновые процессы и из них. Затем он будет «зависать», пока процесс не будет завершен.
Эту проблему часто можно решить, перенаправив все 3 потока данных.
Мы надеемся, что эта быстрая статья помогла вам лучше использовать сеансы SSH. Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.
Using nohup to allows jobs to continue on logout
Using nohup to allows jobs to continue on logout
Команда выполняет другую программу, указанную в качестве аргумента, и игнорирует все сигналы (зависание). — это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.
Обычно, когда вы запускаете программу по SSH, если ваше соединение прерывается или вы выходите из системы, сеанс завершается, и все процессы, выполняемые с терминала, останавливаются. Вот где команда пригодится. Он игнорирует все сигналы зависания, и процесс продолжится.
Как использовать команду nohup
Синтаксис команды следующий:
Команда не принимает никаких других опций, кроме стандартных и .
Давайте посмотрим на следующий пример:
запускает команду на переднем плане и перенаправляет вывод файл . Этот файл создается в текущем рабочем каталоге. Если пользователь, выполняющий команду, не имеет прав на запись в рабочий каталог, файл создается в домашнем каталоге пользователя.
Если вы выйдете из системы или закроете терминал, процесс не прекратится.
Запуск команды в фоновом режиме
Использование на переднем плане не очень полезно, потому что вы не сможете взаимодействовать с оболочкой, пока команда не завершится.
Чтобы запустить команду в фоновом режиме, добавьте символ в конце команды:
Вывод включает идентификатор задания оболочки (заключенный в квадратные скобки) и идентификатор процесса:
Вы можете использовать идентификатор задания, чтобы вывести команду на передний план с помощью команды .
Если по какой-либо причине вы хотите прервать процесс, используйте команду за которой следует идентификатор процесса:
Перенаправление вывода в файл
По умолчанию перенаправляет вывод файл . Если вы хотите перенаправить вывод в другой файл, используйте стандартное перенаправление оболочки.
Например, чтобы перенаправить стандартный вывод и стандартную ошибку в вы должны использовать:
Чтобы перенаправить стандартный вывод и стандартную ошибку в разные файлы:
альтернативы
Есть несколько альтернативных программ, которые вы можете использовать, чтобы избежать прерывания команды при закрытии терминала или отключении.
экран
Screen или GNU Screen — это программа мультиплексора терминала, которая позволяет запустить сеанс экрана и открыть любое количество окон (виртуальных терминалов) внутри этого сеанса. Процессы, запущенные в Screen, будут продолжать выполняться, когда их окно не отображается, даже если вы отключены.
Tmux
Tmux — современная альтернатива экрану GNU. С Tmux вы также можете создать сеанс и открыть несколько окон внутри этого сеанса. Сеансы Tmux являются постоянными, что означает, что программы, работающие в Tmux, продолжат работать, даже если вы закроете терминал.
отрекаться
— встроенная оболочка, которая удаляет задание оболочки из управления заданиями оболочки. В отличие от , вы также можете использовать при запуске процессов.
Вывод
позволяет предотвратить прекращение выполнения команд при выходе из системы или выходе из терминала.
терминал nohup
В Linux доступ к файлам управляется через права доступа к файлам, атрибуты и права собственности. В этом руководстве рассказывается, как использовать команду chmod для изменения прав доступа к файлам и каталогам.
В Linux каждый файл связан с владельцем и группой и имеет разрешения, которые определяют, какие пользователи могут читать, записывать или выполнять файл. Команда chgrpc меняет групповое владение данными файлами.
cp — утилита командной строки для копирования файлов и каталогов в системах Unix и Linux.
Работа процессов в фоне
Запуск скрипта в фоне linux — это одно, но надо чтобы он ещё работал после закрытия терминала. Закрытие терминала путем нажатия на крестик в верхнем углу экрана влечет за собой завершение всех фоновых процессов. Впрочем, есть несколько способов сохранить их после того как связь с интерактивной оболочкой прервется. Первый способ — это удаление задачи из очереди заданий при помощи команды disown:
Как и в предыдущих случаях, при наличии нескольких одновременно выполняемых процессов следует указывать номер того, относительно которого будет выполнено действие:
Убедиться, что задачи больше нет в списке заданий, можно, использовав уже знакомую утилиту jobs -l. А чтобы просмотреть перечень всех запущенных процессов (в том числе и отключенных) применяется команда
Второй способ сохранить запущенные процессы после прекращения работы терминала — команда nohup. Она выполняет другую команду, которая была указана в качестве аргумента, при этом игнорирует все сигналы SIGHUP (те, которые получает процесс при закрытии терминала). Для запуска команды в фоновом режиме нужно написать команду в виде:
Как видно на скриншоте, вывод команды перенаправляется в файл nohup.out. При этом после выхода из системы или закрытия терминала процесс не завершается. Существует ряд программ, которые позволяют запускать несколько интерактивных сессий одновременно. Наиболее популярные из них — Screen и Tmux.
- Screen либо GNU Screen — это терминальный мультиплексор, который позволяет запустить один рабочий сеанс и в рамках него открыть любое количество окон (виртуальных терминалов). Процессы, запущенные в этой программе, будут выполняться, даже если их окна невидимы или программа прекратила работу.
- Tmux — более современная альтернатива GNU Screen. Впрочем, возможности Tmux не имеют принципиальных отличий — в этой программе точно так же можно открывать множество окон в рамках одного сеанса. Задачи, запущенные в Tmux, продолжают выполняться, если терминал был закрыт.