Как найти родительский процесс процесса

На чтение 4 мин Просмотров 3.5к. Опубликовано 22.06.2021

Во время выполнения программы ядро ​​создает процесс, который помогает сохранять детали выполнения программы в системной памяти. Когда программа выполняется, она становится процессом для системы. Итак, мы можем сказать, что процесс — это программа, пока он не выполняется.

Процесс, созданный ядром, известен как » родительский процесс «, а все процессы, производные от родительского процесса, называются » дочерними процессами «. Один процесс может состоять из нескольких дочерних процессов, имеющих уникальный PID, но с одним и тем же PPID.

У новичка может возникнуть вопрос: в чем разница между PID и PPID?

Мы уже обсуждали PID в большинстве наших статей, если вы новичок, не беспокойтесь!

В системах Linux одновременно выполняется несколько процессов. Иногда процесс может иметь один поток (блок выполнения внутри процесса) или несколько потоков. Процессы имеют разные состояния; они могут находиться в состоянии ожидания, готовности или работы. Все дело в том, как пользователь или ядро ​​расставляют приоритеты. Итак, эти процессы идентифицируются уникальными номерами, которые мы называем идентификатором процесса (PID). Уникальные номера для родительских процессов называются PPID, и каждый родительский процесс может иметь несколько дочерних процессов с их уникальными идентификаторами. PID дочерних процессов отличаются, поскольку они представляют собой отдельные исполнительные единицы, но имеют один и тот же идентификатор родительского процесса ( PPID ).

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

Давайте проверим, как мы можем найти PPID:

Содержание

  1. Как найти идентификатор родительского процесса (PPID) в Linux
  2. Как найти PPID с помощью команды pstree в Linux
  3. Как найти PPID с помощью команды ps
  4. Заключение

Как найти идентификатор родительского процесса (PPID) в Linux

У нас есть несколько подходов к поиску PPID запущенного процесса в системах Linux:

  1. Использование команды «pstree»
  2. Использование команды «ps»

Как найти PPID с помощью команды pstree в Linux

Команда » pstree » — хороший подход для определения идентификатора родительского процесса (PPID), поскольку она показывает отношения родитель-потомок в древовидной иерархии.

Введите в терминале просто команду » pstree » с параметром » -p «, чтобы проверить, как он отображает все запущенные родительские процессы вместе с их дочерними процессами и соответствующими PID.

хороший подход для определения идентификатора родительского процесса

Он показывает родительский идентификатор вместе с идентификаторами дочерних процессов.

Давайте рассмотрим пример „Mozilla Firefox“, чтобы получить его PPID вместе с полной иерархией процессов. Выполните в терминале следующую команду:

pstree -p | grep “firefox”

чтобы получить его PPID вместе с полной иерархией процессов

( grep — это инструмент командной строки, который помогает искать определенную строку)

В упомянутых результатах мы видим, что 3528 — это PPID процесса » Firefox «, а все остальные — дочерние процессы.

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

pstree -p | grep “firefox” | head -1

Чтобы распечатать в терминале только идентификатор родительского процесса, выполните указанную команду

Как найти PPID с помощью команды ps

Утилита команды » ps » — это еще один способ обрабатывать информацию из файловой системы » / proc » и отслеживать ее.

С помощью этой команды пользователь также может найти PPID и PID запущенного процесса.

Выполните следующую команду » ps » вместе с параметром » ef «, чтобы отобразить подробную информацию о процессах, включая PPID :

ps -ef

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

Если вы хотите отобразить PPID определенного процесса с подробностями, выполните указанную команду » ps » с помощью » grep «:

ps -ef | grep “firefox”

используется для перечисления деталей процесса

( опция » -f » используется для перечисления деталей процесса)

А чтобы получить только PPID » Firefox «, используйте следующий синтаксис:

ps -e | grep [process_name]

Итак, найдите PPID » firefox » с помощью команды:

ps -e | grep “firefox”

Итак, найдите PPID firefox с помощью команды

Заключение

При каждом выполнении программы ядро ​​создает процесс, который загружает детали выполнения в память. Этот созданный процесс известен как родительский процесс, имеющий один или несколько потоков. Каждому процессу ядро автоматически присваивает уникальный PPID и PID.

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

Идентификаторы PPID запущенных процессов можно определить несколькими способами. Самый простой подход — использовать команду » ps » и » pstree «.

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

Возможно, вы сталкивались с ситуациями, когда непрерывная работа жесткого диска происходит, хотя ваша система находится в режиме ожидания. Если вы откроете диспетчер задач из любопытства, вы можете обнаружить, что несколько процессов запускаются и выходят самостоятельно, и вы ничего не делаете. Это может быть задание резервного копирования по расписанию, сторонняя программа обслуживания системы или что-то, что может сбивать ваш жесткий диск. Это может быть даже вредоносное ПО. Но какое приложение или процесс запускает их?

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

Использование Process Explorer

Process Explorer – отличная программа, которая расскажет вам все, что вы хотите знать о запущенных процессах. Скачайте Process Explorer, разархивируйте и запустите исполняемый файл.

$config[ads_text6] not found

В целях иллюстрации я запускаю инструмент информации о системе (msinfo32.exe) на вкладке «Инструменты» утилиты настройки системы (MSConfig.exe).

В Process Explorer нажмите CTRL + T, чтобы переключиться в режим просмотра дерева (вид по умолчанию), как показано ниже. Это представление показывает список процессов, запущенных родительским процессом.

Рис 2: процесс msinfo32.exe, созданный msconfig.exe

Другой вариант заключается в двойном щелчке по процессу, который показывает «родительский» процесс и его идентификатор процесса.

Использование Process Monitor

Process Monitor – еще один потрясающий инструмент от Windows SysInternals, который показывает, что работает в режиме реального времени. Он может отслеживать процессы, файловую систему, реестр и сетевую активность в режиме реального времени, а также имеет другие полезные функции. Загрузите Process Monitor и запустите его.

Нажмите кнопку «Процесс и активность потока» и отключите все остальные кнопки. Нажмите CTRL + E, чтобы начать захват (действует как переключатель)

Любой процесс, который создан и завершен с этого момента, фиксируется и отображается на дисплее.

Там вы можете увидеть процесс запуска msconfig.exe msinfo.exe.

Примечание редактора: этот метод очень полезен в тех случаях, когда неизвестный процесс выполняется только в течение 1 или 2 секунд, и его трудно отследить с помощью более раннего инструмента, Process Explorer. Как и в Process Monitor, не имеет значения, запущен ли процесс или завершен, так как все записывается уже в течение периода захвата.

Удачного Вычисления!

Возможно, вы сталкивались с ситуациями, когда жесткий диск постоянно активен, хотя ваша система находится в состоянии ожидания. Если вы откроете Диспетчер задач из любопытства, вы можете обнаружить, что несколько процессов запускаются и завершаются сами по себе, а вы ничего не делаете. Это может быть запланированное задание резервного копирования, сторонняя программа обслуживания системы или что-то еще, что может мешать вашему жесткому диску. Это может быть даже вредоносное ПО. Но какое приложение или процесс их запускает?if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-medrectangle-3-0’)};

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

Использование Process Explorer

Process Explorer — отличная программа, которая сообщает вам все, что вы хотите знать о запущенных процессах. Загрузите Process Explorer, разархивируйте и запустите исполняемый файл.

В целях иллюстрации я запускаю средство информации о системе (msinfo32.exe) через вкладку «Инструменты» в служебной программе настройки системы (MSConfig.exe).

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-box-4-0’)};

В Process Explorer нажмите CTRL + T, чтобы переключиться в представление в виде дерева (представление по умолчанию), как показано ниже. Это представление показывает список процессов, запущенных родительским процессом.


Рис 2: процесс msinfo32.exe, созданный msconfig.exe

Другой вариант — дважды щелкнуть процесс, и это покажет «Родительский» процесс и его идентификатор процесса.

Использование Process Monitor

Process Monitor — еще один потрясающий инструмент от Windows SysInternals, который в режиме реального времени показывает, что происходит под капотом. Он может отслеживать процессы, файловую систему, реестр и сетевую активность в режиме реального времени, а также имеет другие полезные функции. Скачайте Process Monitor и запустите его.

Нажмите кнопку «Процесс и активность потока» и отключите все остальные кнопки. Нажмите CTRL + E, чтобы начать захват (действует как переключатель)

if(typeof __ez_fad_position!=’undefined’){__ez_fad_position(‘div-gpt-ad-winhelponline_com-banner-1-0’)};

Любой процесс, созданный и завершенный с этого момента, фиксируется и отображается на дисплее.

Здесь вы можете увидеть, как процесс msconfig.exe запускает msinfo.exe.

Примечание редактора: этот метод очень полезен в случаях, когда неизвестный процесс выполняется всего 1 или 2 секунды и его сложно отследить с помощью более раннего инструмента Process Explorer. Где, как в Process Monitor, не имеет значения, выполняется процесс или завершен, поскольку все записывается уже в течение периода захвата.

Удачных вычислений!

Содержание

  1. 9 самых простых способов узнать идентификатор процесса (PID) в Linux
  2. Что такое идентификатор процесса PID?
  3. Метод-1: Использование команды pidof
  4. Способ-2: Использование команды pgrep
  5. Метод-3: Использование команды pstree
  6. Метод-4: Использование команды ps
  7. Метод-5: Использование команды ss
  8. Метод-6: Использование команды netstat
  9. Метод-7: использование команды lsof
  10. Метод-8: Использование команды fuser
  11. Метод-9: Использование команды systemctl
  12. Как использовать команду ps для мониторинга процессов Linux
  13. Управление процессами в Linux
  14. Программа для показа процессов в Linux
  15. Как увидеть все процессы в Linux
  16. Отображение иерархии процессов (дерево процессов в Linux)
  17. Как напечатать дерево определённого процесса
  18. Фильтрация вывода ps по определённым строкам (по имени команды, например)
  19. Больше столбцов в выводе ps
  20. Нужно ли указывать дефис перед опциями ps
  21. Поиск процессов по идентификатору процесса
  22. Поиск процессов по имени команды
  23. Как увидеть потоки процесса
  24. Как увидеть процессы определённого пользователя
  25. Как вывести все процессы запущенные пользователем root
  26. Просмотр групповых процессов
  27. Листинг процессов по терминалам
  28. Выбор столбцов для отображения
  29. Сортировка вывода по столбцам
  30. Все возможные поля ps
  31. Примеры настраиваемого вывода ps
  32. Как найти имя процесса по PID
  33. Показать родительский и дочерний процессы
  34. Как выключить процесс по идентификатору процесса
  35. Как выключить процесс зная его имя
  36. Как остановить несколько процессов по имени
  37. Устранение неполадок производительности системы Linux
  38. Вывод информации о безопасности
  39. Выполните мониторинг процессов в режиме реального времени с помощью утилиты watch
  40. Как найти родительский процесс в Linux
  41. Как найти идентификатор родительского процесса (PPID) в Linux
  42. Как найти PPID с помощью команды pstree в Linux
  43. Как найти PPID с помощью команды ps
  44. Заключение

9 самых простых способов узнать идентификатор процесса (PID) в Linux

%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA %D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0 %D0%BE%D1%82 2018 09 25 10 43 14

Linux GUI также предлагает ту же функцию, но CLI – эффективный способ выполнения операции kill.

Что такое идентификатор процесса PID?

PID обозначает идентификационный номер процесса, который обычно используется большинством ядер операционной системы, таких как Linux, Unix, macOS и Windows.

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

Процесс – это исполняемый экземпляр программы.

PID для запущенных процессов в системе можно найти с помощью следующих девяти методов, таких как команда pidof, команда pgrep, команда ps, команда pstree, команда ss, команда netstat, команда lsof, команда fuser и команда systemctl.

В этом уроке мы рассмотрим идентификатор процесса Apache для проверки.

Метод-1: Использование команды pidof

pidof используется для поиска идентификатора процесса запущенной программы.

Он выводит эти идентификаторы на стандартный вывод.

Чтобы продемонстрировать это, мы узнаем идентификатор процесса Apache2 из системы Debian 9.

Из вышесказанного вы можете столкнуться с трудностями идентификации идентификатора процесса, поскольку он показывает все PID (включая родительский и дочерний) с именем процесса.

Следовательно, нам нужно выяснить родительский PID (PPID), который мы ищем.

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

Способ-2: Использование команды pgrep

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

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

В моем случае это 3754.

Примечание. Если у вас есть несколько идентификаторов процесса, вы можете столкнуться с проблемой идентификации идентификатора родительского процесса при использовании команды pidof & pgrep.

Метод-3: Использование команды pstree

pstree показывает запущенные процессы как дерево.

Дерево коренится либо в pid, либо в init, если pid опущен.

Если имя пользователя указано в команде pstree, тогда отображается весь процесс, принадлежащий соответствующему пользователю.

pstree визуально объединяет идентичные ветви, помещая их в квадратные скобки и префикс с количеством повторений.

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

Команда pstree очень простая, потому что она отдельно разделяет родительский и дочерний процессы

Метод-4: Использование команды ps

ps отображает информацию о выборе активных процессов.

Он отображает идентификатор процесса (pid = PID), терминал, связанный с процессом (tname = TTY), кумулятивное время процессора в формате [DD-] hh: mm: ss (time = TIME) и исполняемое имя (ucmd = ЦМД).

По умолчанию выходной файл не сортируется.

Из вышеприведенного вывода мы можем легко идентифицировать идентификатор родительского процесса (PPID) на основе даты начала процесса.

В моем случае процесс apache2 был запущен @ Dec11, который является родителем, а другие – дочерними. PID apache2 равен 3754.

Метод-5: Использование команды ss

ss используется для вывода статистики сокетов.

Он позволяет отображать информацию, аналогичную netstat.

Он может отображать больше информации о TCP и состоянии, нежели другие инструменты.

Он может отображать статистику для всех типов сокетов, таких как PACKET, TCP, UDP, DCCP, RAW, домен Unix и т. д.

Метод-6: Использование команды netstat

netstat – вывод сетевых подключений, таблиц маршрутизации, статистики интерфейсов, соединений маскарадинга и многоадресной рассылки.

По умолчанию netstat отображает список открытых сокетов.

Если вы не укажете каких-либо семейств адресов, будут выведены активные сокеты всех сконфигурированных семейств адресов.

Эта программа устарела. Замена для netstat – ss.

Метод-7: использование команды lsof

lsof – список открытых файлов.

Команда lsof Linux выводит информацию о файлах, открытых для процессов, запущенных в системе.

Метод-8: Использование команды fuser

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

Метод-9: Использование команды systemctl

systemctl – Управление системой systemd и менеджером сервисов.

Это замена старого системного управления SysV и большинство современных операционных систем Linux были адаптированы systemd.

Источник

Как использовать команду ps для мониторинга процессов Linux

ps (processes status — статус процессов) — это встроенная утилита Unix/Linux для просмотра информации, касающейся выбора запущенных процессов в системе: она считывает эту информацию из виртуальных файлов в файловой системе /proc. Это одна из важных утилит для системного администрирования, особенно в рамках мониторинга процессов, чтобы помочь вам понять, что происходит в системе Linux.

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

Утилита ps выводит снимок процессов на вашем компьютере Linux. Вы сможете найти процессы по имени, пользователю или даже терминалу с таким количеством деталей, сколько вам нужно. В этой статье подготовлено множество примеров использования ps.

Управление процессами в Linux

Сердцем всех Linux и Unix-подобных операционных систем является ядро. Среди его многочисленных обязанностей — распределение системных ресурсов, таких как оперативная память и процессорное время. Они должны выполняться в режиме реального времени, чтобы все запущенные процессы получали свою справедливую долю в соответствии с приоритетом каждой задачи.

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

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

ps достаточно гибка, чтобы предоставить вам именно ту информацию, которая вам нужна, именно в том формате, который вам нравится. На самом деле, у ps очень много опций. Опции, описанные здесь, будут соответствовать большинству обычных потребностей. Если вы хотите изучить команду ps ещё глубже, то знакомство с командой ps в этой статье и примеры использования ps облегчат вам восприятие справочной страницы.

Программа для показа процессов в Linux

Самый простой способ использовать ps — запустить её без параметров:

ps покажет список процессов в данном терминале.

В выводе присутствует четыре столбца:

Как увидеть все процессы в Linux

Добавление опции -e (выбрать все процессы) сделает так, что ps перечислит процессы, которые были запущены всеми пользователями, а не только пользователем, который запускает команду ps. Поскольку это будет длинный список, то вы можете добавить команду less.

Список процессов с возможностью прокрутки в команде less:

ps 2

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

Отображение иерархии процессов (дерево процессов в Linux)

Если вы видите, какие процессы запустили другие процессы, то иногда это может помочь выяснить проблему или определить конкретный процесс. Для этого мы используем опцию -H.

Отступы указывают, какие процессы являются родителями каких других процессов.

ps 3

Чтобы добавить немного ясности, мы можем попросить ps добавить несколько линий ASCII и нарисовать иерархию в виде дерева. Это можно сделать опцией —forest.

Это позволить проще отслеживать, какие процессы являются родителями других процессов.

ps 5

Как напечатать дерево определённого процесса

Вы можете получить дерево процессов только нужной вам программы следующим образом (замените sshd на интересующий вас процесс):

ps 14

Об опции -C будет рассказано далее в этой статье.

Фильтрация вывода ps по определённым строкам (по имени команды, например)

Вы можете направить вывод из ps через grep и найти нужные записи о процессах по любым строкам. Здесь мы ищем записи, соответствующие поисковому запросу «firefox»:

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

ps grep

Больше столбцов в выводе ps

Чтобы добавить дополнительные столбцы к выводу, используйте параметр -f (полный формат).

Дополнительный набор столбцов включён в вывод ps.

ps 6

Из новых столбов появились:

Используя опцию -F (дополнительный полный формат), мы можем получить ещё больше столбцов:

Если у вас маленькое окно терминала, то столбцы, которые мы получаем в этот раз, требуют прокрутки экрана в сторону, чтобы показать их все. Нажатие клавиши «Стрелка вправо» смещает дисплей влево.

ps 7

Теперь добавились следующие столбцы:

Нужно ли указывать дефис перед опциями ps

В некоторых примерах вы можете увидеть использование ps с опциями без дефиса или с длинными вариантами написания опций в стиле GNU. Для совместимости, ps поддерживает все три формата. Опции без дефиса — это стиль BSD и значение опций с дефисом и без может быть различным!

Пример показа процессов в формате BSD:

В этой команде значение опций следующее:

Проще говоря, если использовать вместе a и x, то будут показаны все процессы.

Нужно быть аккуратным, и не забывать ставить дефис если вы используете опции UNIX, поскольку в случае неопределённости ps будет пытаться трактовать в разных вариантах. В этой инструкции кроме рассмотренного примера везде используются опции UNIX.

Поиск процессов по идентификатору процесса

Как только вы нашли идентификатор процесса для интересующего вас процесса, вы можете использовать его с командой ps, чтобы вывести подробную информацию об этом процессе. Для этого используйте спользуйте параметр -p после которого укажите число — идентификатор процесса:

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

Поиск процессов по имени команды

Опция -C (КОМАНДА) позволяет вам искать процесс, используя имя команды. То есть имя команды, которая запустила процесс. Это несколько отличается от строки команды, которая может включать имена путей и параметры или опции.

Выведена информация только о процессе, запущенным указанной командой:

ps 8

Процессов может быть несколько если запущено множество экземпляров данной команды:

ps 9

Как увидеть потоки процесса

Чтобы вывести все потоки процесса, используйте флаг -H. Опция -L приведёт к показу столбца LWP (light weight process — процесс с малым весом), а также столбца NLWP (number of light weight process — число процессов с малым весом).

Как увидеть процессы определённого пользователя

Чтобы увидеть процессы, принадлежащие конкретному пользователю, используйте опцию -u (СПИСОК ПОЛЬЗОВАТЕЛЕЙ):

Отображаются процессы, принадлежащие учётной записи пользователя mial.

ps 10

Как вывести все процессы запущенные пользователем root

Это частный случай показа процессов определённого пользователя.

Команда ниже позволяет вам просматривать каждый процесс, работающий с привилегиями пользователя root (действительный и эффективный идентификатор) в формате пользователя.

Просмотр групповых процессов

Если вы хотите перечислить все процессы, принадлежащие определённой группе (реальный идентификатор группы (RGID) или имя), введите:

Чтобы вывести список всех процессов, принадлежащих эффективному имени группы (или сеанса), введите.

Листинг процессов по терминалам

Чтобы увидеть процессы, связанные с TTY, используйте опцию -t (УКАЖИТЕ TTY). При использовании без номера TTY опция -t сообщает о процессах, связанных с текущим окном терминала.

Все перечисленные процессы связаны с pts/1.

ps 11

Выбор столбцов для отображения

С опцией -o (ФОРМАТ) вы можете выбрать, какие столбцы вы хотите включить в вывод ps. Столбцы нужно указывать по имени. В руководстве по ps:

вы найдёте длинный список имён столбцов в разделе STANDARD FORMAT SPECIFIERS.

В следующем примере мы выводим потребление процессом времени центрального процессора (pcpu), потребление процессором памяти (pmem) и запустившая его команда вместе с опциями (args):

Обратите внимание, что опция -o не добавляет столбцы в стандартным, а выводит только запрошенные поля.

ps 12

Сортировка вывода по столбцам

Вы можете отсортировать вывод, используя опцию —sort. Давайте отсортируем вывод по столбцу CPU:

Дефис «» означает сортировку от большего к меньшему.

Чтобы увидеть десять самых ресурсоемких процессов, передайте вывод через команду head:

Мы получаем отсортированный, усечённый список.

Если мы добавим больше столбцов для вывода, мы сможем отсортировать по большему количеству столбцов.

Без дефиса или со знаком «+» сортировка выполняется от меньшего к большему.

Добавим в сортировку столбец pmem:

Сортировка по-прежнему выполняется по значению pcpu, но если для каких-то записей эти значения одинаковые, то выполняется сортировка по pmem для этих значений.

Давайте сделаем вывод результатов немного более полезным и добавим столбец идентификатора процесса (pid), чтобы мы могли видеть номер процесса каждого процесса в нашем листинге.

Теперь мы можем идентифицировать процессы.

Все возможные поля ps

Чтобы увидеть все возможные для вывода поля ps выполните такую команду:

Эти поля вы можете применять с опцией -o.

Примеры настраиваемого вывода ps

Команда ниже позволяет вам увидеть PID, PPID, имя пользователя и команду процесса.

Ниже приведён ещё один пример пользовательского формата вывода, показывающий группу файловой системы, значение nice, время начала и истекшее время процесса.

Как найти имя процесса по PID

Чтобы найти имя процесса, используя его PID.

Показать родительский и дочерний процессы

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

Чтобы найти все PID всех экземпляров процесса, что полезно при написании сценариев, которые должны считывать PID из выходных данных или файла std.

Как выключить процесс по идентификатору процесса

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

Если все идёт хорошо, процесс молча завершается.

Как выключить процесс зная его имя

Команда pkill позволяет вам убивать процессы по имени. Убедитесь, что вы определили правильный процесс! Эта команда завершит процесс top.

Опять же, нет новостей, это хорошие новости. Процесс молча завершается.

Как остановить несколько процессов по имени

Если у вас запущено несколько копий процесса, или процесс породил несколько дочерних процессов (как это может сделать Google Chrome), как вы можете выключить их? Это так же просто. Мы используем команду killall.

У нас запущено два экземпляра top:

Мы можем завершить их обоих с помощью этой команды:

Отсутствие ответа означает отсутствие проблем, т. е. оба эти процессы были остановлены.

killall

Убедитесь, что это тот, который вам нужен, и убедитесь, что это не вызовет никаких проблем. В частности, стоит проверить с помощью параметров -H и —forest, чтобы убедиться, что в нем нет важных дочерних процессов, о которых вы забыли.

Устранение неполадок производительности системы Linux

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

Чтобы найти все процессы, потребляющие больше всего памяти и ЦПУ в Linux:

Вывод информации о безопасности

Показать контекст безопасности (специально для SELinux) можно следующим образом:

С помощью этой команды вы также можете отобразить информацию о безопасности в определённом пользователем формате:

Выполните мониторинг процессов в режиме реального времени с помощью утилиты watch

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

Источник

Как найти родительский процесс в Linux

Во время выполнения программы ядро ​​создает процесс, который помогает сохранять детали выполнения программы в системной памяти. Когда программа выполняется, она становится процессом для системы. Итак, мы можем сказать, что процесс — это программа, пока он не выполняется.

Процесс, созданный ядром, известен как » родительский процесс «, а все процессы, производные от родительского процесса, называются » дочерними процессами «. Один процесс может состоять из нескольких дочерних процессов, имеющих уникальный PID, но с одним и тем же PPID.

У новичка может возникнуть вопрос: в чем разница между PID и PPID?

Мы уже обсуждали PID в большинстве наших статей, если вы новичок, не беспокойтесь!

В системах Linux одновременно выполняется несколько процессов. Иногда процесс может иметь один поток (блок выполнения внутри процесса) или несколько потоков. Процессы имеют разные состояния; они могут находиться в состоянии ожидания, готовности или работы. Все дело в том, как пользователь или ядро ​​расставляют приоритеты. Итак, эти процессы идентифицируются уникальными номерами, которые мы называем идентификатором процесса (PID). Уникальные номера для родительских процессов называются PPID, и каждый родительский процесс может иметь несколько дочерних процессов с их уникальными идентификаторами. PID дочерних процессов отличаются, поскольку они представляют собой отдельные исполнительные единицы, но имеют один и тот же идентификатор родительского процесса ( PPID ).

Давайте проверим, как мы можем найти PPID:

Как найти идентификатор родительского процесса (PPID) в Linux

У нас есть несколько подходов к поиску PPID запущенного процесса в системах Linux:

Как найти PPID с помощью команды pstree в Linux

Команда » pstree » — хороший подход для определения идентификатора родительского процесса (PPID), поскольку она показывает отношения родитель-потомок в древовидной иерархии.

horoshij podhod dlya opredeleniya identifikatora roditelskogo protsessa e1624334861732

Он показывает родительский идентификатор вместе с идентификаторами дочерних процессов.

Давайте рассмотрим пример „Mozilla Firefox“, чтобы получить его PPID вместе с полной иерархией процессов. Выполните в терминале следующую команду:

chtoby poluchit ego PPID vmeste s polnoj ierarhiej protsessov e1624334901471

( grep — это инструмент командной строки, который помогает искать определенную строку)

В упомянутых результатах мы видим, что 3528 — это PPID процесса » Firefox «, а все остальные — дочерние процессы.

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

CHtoby raspechatat v terminale tolko identifikator roditelskogo protsessa vypolnite ukazannuyu komandu e1624334942774

Как найти PPID с помощью команды ps

Утилита команды » ps » — это еще один способ обрабатывать информацию из файловой системы » / proc » и отслеживать ее.

С помощью этой команды пользователь также может найти PPID и PID запущенного процесса.

Выполните следующую команду » ps » вместе с параметром » ef «, чтобы отобразить подробную информацию о процессах, включая PPID :

chtoby otobrazit podrobnuyu informatsiyu o protsessah vklyuchaya e1624334990565

Если вы хотите отобразить PPID определенного процесса с подробностями, выполните указанную команду » ps » с помощью » grep «:

ispolzuetsya dlya perechisleniya detalej protsessa e1624335054771

А чтобы получить только PPID » Firefox «, используйте следующий синтаксис:

Итак, найдите PPID » firefox » с помощью команды:

Itak najdite PPID firefox s pomoshhyu komandy e1624335126287

Заключение

При каждом выполнении программы ядро ​​создает процесс, который загружает детали выполнения в память. Этот созданный процесс известен как родительский процесс, имеющий один или несколько потоков. Каждому процессу ядро автоматически присваивает уникальный PPID и PID.

Идентификаторы PPID запущенных процессов можно определить несколькими способами. Самый простой подход — использовать команду » ps » и » pstree «.

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

Источник

Problem

Given a process ID & command-line access on a remote Windows host, how can you find its parent’s PID?

Solution

Given Marc B’s answer, we can use WMIC (Command samples here) and do something like this:

wmic process where (processid=PROCID_HERE) get parentprocessid

golimar's user avatar

golimar

2,3791 gold badge22 silver badges33 bronze badges

asked Sep 20, 2011 at 14:20

joslinm's user avatar

3

C:> wmic process get processid,parentprocessid,executablepath|find "process id goes here"

answered Sep 20, 2011 at 14:25

Marc B's user avatar

Marc BMarc B

355k43 gold badges420 silver badges496 bronze badges

6

In powershell:

PS> wmic process  where '(processid=4632)' get 'processid,parentprocessid,executablepath'
ExecutablePath                                              ParentProcessId  ProcessId
C:Program FilesDockerDockerResourcescom.docker.db.exe  4488             4632

answered Jan 16, 2018 at 1:10

uffe hellum's user avatar

Based on joslinm’s solution in the question, here’s a snippet of how to use this in a batch script:

set PID=<this is the child process ID>
for /f "usebackq tokens=2 delims==" %%a in (`wmic process where ^(processid^=%PID%^) get parentprocessid /value`) do (
    set PARENT_PID=%%a
)

Community's user avatar

answered Apr 27, 2015 at 5:39

robinst's user avatar

robinstrobinst

29.6k10 gold badges102 silver badges108 bronze badges

Or you can do something like this in PowerShell:

Get-CimInstance -className win32_process | where-object {$_.ProcessId -eq processId_goes_here } | select ParentProcessId, Name

as well you can filter by name just substitute $_.ProcessId with $_.Name property

answered Dec 18, 2020 at 13:50

knile's user avatar

knileknile

2983 silver badges15 bronze badges

1

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