Перейти к содержимому

Как посмотреть nohup процессы

  • автор:

Как посмотреть nohup процессы


Next: Обзор наиболее употребительных команд Up: Выполнение, останов и повторный Previous: Запуск остановленного задания Contents Index

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

nohup command &

Предположим, вы хотите, чтобы команда grep осуществила поиск во всех файлах в вашем текущем каталоге строки «word» и перенаправила вывод в файл word.list, и затем, не ожидая завершения, вы хотите выйти из системы, то введите следующую строку:

nohup grep word * > word.list &

Вы можете завершить команду nohup с помощью команды kill .

Alex Otwagin 2002-12-16

Посмотреть процессы на узле

Запустил скрипт с использованием nohup и вышел с кластера. Скрипт работает, но я не вижу его в списке процессов (ps, top).. Как теперь его отыскать? И вообще посмотреть процессы на всех узлах?

Linux version 3.10.0-693.11.6.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Thu Jan 4 01:06:37 UTC 2018

kuav14
27.03.18 00:48:12 MSK

ps aux от root-а точно покажет все процессы.

запускать долго выполняющиеся процессы с помощью nohup так себе затея. systemd unit (или аналог), ну в самом крайнем случае (если это не демон, а именно что-то долго исполняющееся) — screen/tmux.

pod ★★
( 27.03.18 08:06:17 MSK )

Или благородный Дон что-то не договаривает,

или ожидает того, чего быть не должно.

Если брать, например, кластер МГУ Ломоносов — то это набор весьма независисых друг от друга машин, которые связаны быстрой сетью и на которых умеют автоматически запускаться MPI-процессы (если их запускать правильно, через torque — местный планировщик).

Если брагородный Дон запускает что-то на одном компе минуя планировщик, то а) он и не должен ничего видеть на остальных компах; б) чтобы посмотреть процессы на этих остальных компах, туда нужно было бы явно зайти по ssh (или выполнить там команду).

Но в том же Ломоносове на другие хосты минуя login-host попасть нельзя.

Или кластер — это бывает что-то другое?

sshestov ★
( 27.03.18 09:51:44 MSK )
Ответ на: Или благородный Дон что-то не договаривает, от sshestov 27.03.18 09:51:44 MSK

Явный вход по ssh помогает, спасибо. Бывает и другое, бывает и Ломоносов..

как завершить процесс nohup? [дубликат]

Запустил следующей командой: nohup python3 /home/python_ml/BotMainPart.py Как мне остановить выполнение данного процесса?

Отслеживать
задан 30 ноя 2018 в 12:17
Иван Анатоьевич Иван Анатоьевич
33 1 1 серебряный знак 4 4 бронзовых знака

по классике — кильнуть. узнайте его pid и пошлите ему kill , возможно, нужно послать «правильный сигнал» — тогда kill -9 , но процесс должен уметь правильно отработать этот сигнал.

30 ноя 2018 в 12:22
а как узнать его pid?
30 ноя 2018 в 12:24
в списке процессов.
30 ноя 2018 в 12:34

узнать список процессов можно в top/htop/atop, также запустив pgrep python3 или ps aux | grep python3 и потом глазками найти нужный процесс.

30 ноя 2018 в 14:03

Обычно, программисты в своем коде сохраняют свой pid специальный файл (например в /var/run или /tmp) и задача прибить процесс стает тривиальной.

30 ноя 2018 в 14:04

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для решения проблемы использовал: killall python3

Отслеживать
ответ дан 30 ноя 2018 в 12:41
Иван Анатоьевич Иван Анатоьевич
33 1 1 серебряный знак 4 4 бронзовых знака

Не лучшая идея. Это убъёт все процессы запущенные python3. Лучше что-то вроде такого: kill $(ps aux | grep BotMainPart.py | awk ‘< print $2 >‘)

30 ноя 2018 в 16:23

  • python
  • linux
  • ubuntu
    Важное на Мете
Связанные
Похожие

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Команда nohup в Linux

Команда nohup выполняет другую программу, указанную в качестве аргумента, и игнорирует все сигналы SIGHUP (зависание). SIGHUP — это сигнал, который отправляется процессу, когда его управляющий терминал закрыт.

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

Как использовать команду nohup

Синтаксис команды nohup следующий:

nohup COMMAND [ARGS] 

Команда не принимает никаких других параметров, кроме стандартных —help и —version .

Давайте посмотрим на следующий пример:

nohup mycommand
nohup: ignoring input and appending output to 'nohup.out' 

nohup запускает команду mycommand на переднем плане и перенаправляет вывод nohup.out файл nohup.out . Этот файл создается в текущем рабочем каталоге . Если пользователь, выполняющий команду, не имеет прав на запись в рабочий каталог, файл создается в домашнем каталоге пользователя.

Если вы выйдете из системы или закроете терминал, процесс не завершится.

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

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

Чтобы запустить команду в фоновом режиме , добавьте символ & в конце команды:

nohup mycommand &

Вывод включает идентификатор задания оболочки (в скобках) и идентификатор процесса:

[1] 25177 

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

Если по какой-то причине вы хотите прервать процесс, используйте команду kill за которой следует идентификатор процесса:

kill -9 25132

Перенаправление вывода в файл

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

Например, чтобы перенаправить стандартный вывод и стандартную ошибку на mycommand.out вы должны использовать:

nohup mycommand > mycommand.out 2>&1 &

Чтобы перенаправить стандартный вывод и стандартную ошибку в разные файлы:

nohup mycommand > mycommand.out 2> mycommand.err &

Альтернативы

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

Screen

Экран или GNU Screen — это программа-мультиплексор терминала, которая позволяет запускать сеанс экрана и открывать любое количество окон (виртуальных терминалов) внутри этого сеанса. Процессы, запущенные в Screen, будут продолжать работать, если их окно не отображается, даже если вы отключитесь.

Tmux

Tmux — это современная альтернатива экрану GNU. С помощью Tmux вы также можете создать сеанс и открыть несколько окон внутри этого сеанса. Сеансы Tmux являются постоянными, что означает, что программы, запущенные в Tmux, будут продолжать работать, даже если вы закроете терминал.

disown

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

Выводы

nohup позволяет предотвратить завершение выполнения команд при выходе из системы или выходе из терминала.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

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

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