Как остановить nohup в linux
Перейти к содержимому

Как остановить nohup в linux

  • автор:

Команда nohup в Linux

В Linux команда nohup (HangUP) поддерживает работу процессов даже после выхода из оболочки или терминала.

Примеры использования команды nohup в Linux

Команда предотвращает получение процессами или заданиями сигнала SIGHUP, который отправляется процессу при закрытии или выходе из терминала.

Содержание

Синтаксис

Ввод и вывод

Если стандартный ввод является терминалом, то он берётся из нечитаемого файла.

Если стандартный вывод является терминалом, то вывод добавляется в nohup.out , при наличии возможности, в противном случае — сюда:

Если стандартный поток ошибок является терминалом, то он перенаправляется в стандартный вывод. Запись вывода в ФАЙЛ осуществляется так:

Использование команды nohup в Linux

Проверка версии утилиты

Для проверки версии утилиты используется следующий синтаксис:

Запуск процесса

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

В скрипт я внёс ошибку. Вывод команды был сохранен в nohup.out :

Вывод можно также перенаправить в другой файл:

Можно перенаправить в файл и стандартную ошибку и вывод с использованием атрибута 2>&1 :

Запуск процесса в фоновом режим

Для запуска процесса в фоновом режиме в конце команды добавляется символ & . Для примера пингуем linuxcookbook.ru и отправляем его в фоновый режим:

Для проверки работы процесса в фоне применяется команда pgrep с опцией -a :

Остановка запущенного процесса

Для остановки запущенного процесса используется команда kill , за которой следует идентификатор (ID) процесса:

Can not stop nohup process

I am trying to run a very complex statistical model that I expected to take a very long time, so I used nohup to run the process. However, I underestimated the length and it would take like 260+ days to complete so I want to cancel the process.

I attempted using ps aux |grep nohup to get the PID, I get the following output:

When I use kill -9 14224 I am told there is no process. So I used ps -ef | grep beast-2 as I do not remember the entire command I entered. Pulls up the following:

I use kill -9 144039 and check again but the process is still running underneath a new PID.

Ljm Dullaart's user avatar

1 Answer 1

Your process 14224 is the grep nohup , as ps told you. So, when you get your prompt back, the grep ended and therefore, it is logical that kill reports that there is no such process.

You will not see s process called nohup in your ps output.

So, how to find the process to kill?

As I don’t have your beast-2 , I will demonstrate with nohup sleep 99 & .

which would give me

1492021 is again my grep , so not important here. 1491988 is my nohupped sleep . The parent PID is 1336776. So checking it gives me

That is a bash . You can go-up even further, , for example using pstree :

So, if you kill the parent, it will no longer spawn new beast-2 s. Here I would

which kills the console and the bash , but not the nohupped sleep:

The parent has now become 1 , which is the init process. If you kill the sleep now,

Команды Linux: как работает nohup

При выходе из оболочки системы Linux все запущенные процессы обычно завершаются или зависают. Но что делать, если вы хотите, чтобы процессы работали даже при выходе из оболочки/терминала? В этом вам поможет команда nohup.

Nohup — это сокращение от no hangup. Эта команда поддерживает в системах Linux работу процессов даже после выхода из оболочки или терминала. Она предотвращает получение процессами или заданиями сигнала SIGHUP ( Signal Hang UP ). Это сигнал, который отправляется процессу при закрытии или выходе из терминала. В этом руководстве мы рассмотрим команду nohup и покажем, как ее можно использовать.

Синтаксис команды nohup

Синтаксис команды выглядит следующим образом:

nohup command arguments

Давайте же посмотрим, как работает данная команда.

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

Вы можете начать с проверки версии Nohup, используя приведенный ниже синтаксис.

Запуск процесса с помощью Nohup

Если вы хотите, чтобы ваши процессы/задания работали даже после закрытия терминала, укажите необходимую команду в nohup, как показано ниже. Задания будут по-прежнему выполняться и не будут уничтожены при выходе из оболочки или терминала.

Согласно приведенному выше выводу результат команды был сохранен в nohup.out. Чтобы убедиться в этом, запустите:

Кроме того, вы можете перенаправить вывод в другой файл, как показано ниже.

nohup ./hello.sh > output.txt

Чтобы просмотреть этот файл, введите:

Чтобы перенаправить в файл и стандартную ошибку, и вывод, используйте атрибут > filename 2>&1 , как показано ниже.

nohup ./hello.sh > myoutput.txt >2&1

Запуск процесса в фоновом режиме

Чтобы запустить процесс в фоновом режиме, используйте символ & в конце команды. В этом примере мы пингуем google.com и отправляем этот процесс в фоновый режим.

nohup ping google.com &

Чтобы проверить процесс при возобновлении работы оболочки, используйте команду pgrep, как показано ниже.

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

Заключение

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

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

Shell Programming and Scripting

10, 0 Member Information Avatar
6, 0 Member Information Avatar
10, 0 Member Information Avatar

Hi esmith92000 ,
I have done that but it is saying That no such process there.

———- Post updated at 09:27 PM ———- Previous update was at 09:25 PM ———-

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *