Как посмотреть 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
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 позволяет предотвратить завершение выполнения команд при выходе из системы или выходе из терминала.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.