На чтение 4 мин Просмотров 3.5к. Опубликовано 22.06.2021
Во время выполнения программы ядро создает процесс, который помогает сохранять детали выполнения программы в системной памяти. Когда программа выполняется, она становится процессом для системы. Итак, мы можем сказать, что процесс — это программа, пока он не выполняется.
Процесс, созданный ядром, известен как » родительский процесс «, а все процессы, производные от родительского процесса, называются » дочерними процессами «. Один процесс может состоять из нескольких дочерних процессов, имеющих уникальный PID, но с одним и тем же PPID.
У новичка может возникнуть вопрос: в чем разница между PID и PPID?
Мы уже обсуждали PID в большинстве наших статей, если вы новичок, не беспокойтесь!
В системах Linux одновременно выполняется несколько процессов. Иногда процесс может иметь один поток (блок выполнения внутри процесса) или несколько потоков. Процессы имеют разные состояния; они могут находиться в состоянии ожидания, готовности или работы. Все дело в том, как пользователь или ядро расставляют приоритеты. Итак, эти процессы идентифицируются уникальными номерами, которые мы называем идентификатором процесса (PID). Уникальные номера для родительских процессов называются PPID, и каждый родительский процесс может иметь несколько дочерних процессов с их уникальными идентификаторами. PID дочерних процессов отличаются, поскольку они представляют собой отдельные исполнительные единицы, но имеют один и тот же идентификатор родительского процесса ( PPID ).
Нам нужен PPID, когда дочерний процесс создает проблемы и не работает должным образом. В этом случае это может повлиять на работу других процессов, а также на систему. Здесь, чтобы остановить непрерывно работающий процесс, необходимо убить его родительский процесс.
Давайте проверим, как мы можем найти PPID:
Содержание
- Как найти идентификатор родительского процесса (PPID) в Linux
- Как найти PPID с помощью команды pstree в Linux
- Как найти PPID с помощью команды ps
- Заключение
Как найти идентификатор родительского процесса (PPID) в Linux
У нас есть несколько подходов к поиску PPID запущенного процесса в системах Linux:
- Использование команды «pstree»
- Использование команды «ps»
Как найти PPID с помощью команды pstree в Linux
Команда » pstree » — хороший подход для определения идентификатора родительского процесса (PPID), поскольку она показывает отношения родитель-потомок в древовидной иерархии.
Введите в терминале просто команду » pstree » с параметром » -p «, чтобы проверить, как он отображает все запущенные родительские процессы вместе с их дочерними процессами и соответствующими PID.
Он показывает родительский идентификатор вместе с идентификаторами дочерних процессов.
Давайте рассмотрим пример „Mozilla Firefox“, чтобы получить его PPID вместе с полной иерархией процессов. Выполните в терминале следующую команду:
$ pstree -p | grep “firefox”
( 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 и 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, не имеет значения, выполняется процесс или завершен, поскольку все записывается уже в течение периода захвата.
Удачных вычислений!
Содержание
- 9 самых простых способов узнать идентификатор процесса (PID) в Linux
- Что такое идентификатор процесса PID?
- Метод-1: Использование команды pidof
- Способ-2: Использование команды pgrep
- Метод-3: Использование команды pstree
- Метод-4: Использование команды ps
- Метод-5: Использование команды ss
- Метод-6: Использование команды netstat
- Метод-7: использование команды lsof
- Метод-8: Использование команды fuser
- Метод-9: Использование команды systemctl
- Как использовать команду ps для мониторинга процессов Linux
- Управление процессами в Linux
- Программа для показа процессов в Linux
- Как увидеть все процессы в Linux
- Отображение иерархии процессов (дерево процессов в Linux)
- Как напечатать дерево определённого процесса
- Фильтрация вывода ps по определённым строкам (по имени команды, например)
- Больше столбцов в выводе ps
- Нужно ли указывать дефис перед опциями ps
- Поиск процессов по идентификатору процесса
- Поиск процессов по имени команды
- Как увидеть потоки процесса
- Как увидеть процессы определённого пользователя
- Как вывести все процессы запущенные пользователем root
- Просмотр групповых процессов
- Листинг процессов по терминалам
- Выбор столбцов для отображения
- Сортировка вывода по столбцам
- Все возможные поля ps
- Примеры настраиваемого вывода ps
- Как найти имя процесса по PID
- Показать родительский и дочерний процессы
- Как выключить процесс по идентификатору процесса
- Как выключить процесс зная его имя
- Как остановить несколько процессов по имени
- Устранение неполадок производительности системы Linux
- Вывод информации о безопасности
- Выполните мониторинг процессов в режиме реального времени с помощью утилиты watch
- Как найти родительский процесс в Linux
- Как найти идентификатор родительского процесса (PPID) в Linux
- Как найти PPID с помощью команды pstree в Linux
- Как найти PPID с помощью команды ps
- Заключение
9 самых простых способов узнать идентификатор процесса (PID) в Linux
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:
Теперь записей о процессах намного больше, но мы видим те же четыре столбца, что и раньше. Вопросительный знак (?) в столбце TTY означает, что процесс запускался не из окна терминала.
Отображение иерархии процессов (дерево процессов в Linux)
Если вы видите, какие процессы запустили другие процессы, то иногда это может помочь выяснить проблему или определить конкретный процесс. Для этого мы используем опцию -H.
Отступы указывают, какие процессы являются родителями каких других процессов.
Чтобы добавить немного ясности, мы можем попросить ps добавить несколько линий ASCII и нарисовать иерархию в виде дерева. Это можно сделать опцией —forest.
Это позволить проще отслеживать, какие процессы являются родителями других процессов.
Как напечатать дерево определённого процесса
Вы можете получить дерево процессов только нужной вам программы следующим образом (замените sshd на интересующий вас процесс):
Об опции -C будет рассказано далее в этой статье.
Фильтрация вывода ps по определённым строкам (по имени команды, например)
Вы можете направить вывод из ps через grep и найти нужные записи о процессах по любым строкам. Здесь мы ищем записи, соответствующие поисковому запросу «firefox»:
В этом случае выходные данные представляют собой одну запись для интересующего нас процесса. Конечно, если бы мы запустили несколько экземпляров Firefox, в списке было бы более одного элемента.
Больше столбцов в выводе ps
Чтобы добавить дополнительные столбцы к выводу, используйте параметр -f (полный формат).
Дополнительный набор столбцов включён в вывод ps.
Из новых столбов появились:
Используя опцию -F (дополнительный полный формат), мы можем получить ещё больше столбцов:
Если у вас маленькое окно терминала, то столбцы, которые мы получаем в этот раз, требуют прокрутки экрана в сторону, чтобы показать их все. Нажатие клавиши «Стрелка вправо» смещает дисплей влево.
Теперь добавились следующие столбцы:
Нужно ли указывать дефис перед опциями ps
В некоторых примерах вы можете увидеть использование ps с опциями без дефиса или с длинными вариантами написания опций в стиле GNU. Для совместимости, ps поддерживает все три формата. Опции без дефиса — это стиль BSD и значение опций с дефисом и без может быть различным!
Пример показа процессов в формате BSD:
В этой команде значение опций следующее:
Проще говоря, если использовать вместе a и x, то будут показаны все процессы.
Нужно быть аккуратным, и не забывать ставить дефис если вы используете опции UNIX, поскольку в случае неопределённости ps будет пытаться трактовать в разных вариантах. В этой инструкции кроме рассмотренного примера везде используются опции UNIX.
Поиск процессов по идентификатору процесса
Как только вы нашли идентификатор процесса для интересующего вас процесса, вы можете использовать его с командой ps, чтобы вывести подробную информацию об этом процессе. Для этого используйте спользуйте параметр -p после которого укажите число — идентификатор процесса:
Можно указывать более чем один идентификатор процесса, перечислив их через запятую или через пробел.
Поиск процессов по имени команды
Опция -C (КОМАНДА) позволяет вам искать процесс, используя имя команды. То есть имя команды, которая запустила процесс. Это несколько отличается от строки команды, которая может включать имена путей и параметры или опции.
Выведена информация только о процессе, запущенным указанной командой:
Процессов может быть несколько если запущено множество экземпляров данной команды:
Как увидеть потоки процесса
Чтобы вывести все потоки процесса, используйте флаг -H. Опция -L приведёт к показу столбца LWP (light weight process — процесс с малым весом), а также столбца NLWP (number of light weight process — число процессов с малым весом).
Как увидеть процессы определённого пользователя
Чтобы увидеть процессы, принадлежащие конкретному пользователю, используйте опцию -u (СПИСОК ПОЛЬЗОВАТЕЛЕЙ):
Отображаются процессы, принадлежащие учётной записи пользователя mial.
Как вывести все процессы запущенные пользователем root
Это частный случай показа процессов определённого пользователя.
Команда ниже позволяет вам просматривать каждый процесс, работающий с привилегиями пользователя root (действительный и эффективный идентификатор) в формате пользователя.
Просмотр групповых процессов
Если вы хотите перечислить все процессы, принадлежащие определённой группе (реальный идентификатор группы (RGID) или имя), введите:
Чтобы вывести список всех процессов, принадлежащих эффективному имени группы (или сеанса), введите.
Листинг процессов по терминалам
Чтобы увидеть процессы, связанные с TTY, используйте опцию -t (УКАЖИТЕ TTY). При использовании без номера TTY опция -t сообщает о процессах, связанных с текущим окном терминала.
Все перечисленные процессы связаны с pts/1.
Выбор столбцов для отображения
С опцией -o (ФОРМАТ) вы можете выбрать, какие столбцы вы хотите включить в вывод ps. Столбцы нужно указывать по имени. В руководстве по ps:
вы найдёте длинный список имён столбцов в разделе STANDARD FORMAT SPECIFIERS.
В следующем примере мы выводим потребление процессом времени центрального процессора (pcpu), потребление процессором памяти (pmem) и запустившая его команда вместе с опциями (args):
Обратите внимание, что опция -o не добавляет столбцы в стандартным, а выводит только запрошенные поля.
Сортировка вывода по столбцам
Вы можете отсортировать вывод, используя опцию —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:
Мы можем завершить их обоих с помощью этой команды:
Отсутствие ответа означает отсутствие проблем, т. е. оба эти процессы были остановлены.
Убедитесь, что это тот, который вам нужен, и убедитесь, что это не вызовет никаких проблем. В частности, стоит проверить с помощью параметров -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), поскольку она показывает отношения родитель-потомок в древовидной иерархии.
Он показывает родительский идентификатор вместе с идентификаторами дочерних процессов.
Давайте рассмотрим пример „Mozilla Firefox“, чтобы получить его PPID вместе с полной иерархией процессов. Выполните в терминале следующую команду:
( grep — это инструмент командной строки, который помогает искать определенную строку)
В упомянутых результатах мы видим, что 3528 — это PPID процесса » Firefox «, а все остальные — дочерние процессы.
Чтобы распечатать в терминале только идентификатор родительского процесса, выполните указанную команду:
Как найти PPID с помощью команды ps
Утилита команды » ps » — это еще один способ обрабатывать информацию из файловой системы » / proc » и отслеживать ее.
С помощью этой команды пользователь также может найти PPID и PID запущенного процесса.
Выполните следующую команду » ps » вместе с параметром » ef «, чтобы отобразить подробную информацию о процессах, включая PPID :
Если вы хотите отобразить PPID определенного процесса с подробностями, выполните указанную команду » ps » с помощью » grep «:
А чтобы получить только PPID » Firefox «, используйте следующий синтаксис:
Итак, найдите PPID » firefox » с помощью команды:
Заключение
При каждом выполнении программы ядро создает процесс, который загружает детали выполнения в память. Этот созданный процесс известен как родительский процесс, имеющий один или несколько потоков. Каждому процессу ядро автоматически присваивает уникальный 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
2,3791 gold badge22 silver badges33 bronze badges
asked Sep 20, 2011 at 14:20
3
C:> wmic process get processid,parentprocessid,executablepath|find "process id goes here"
answered Sep 20, 2011 at 14:25
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
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
)
answered Apr 27, 2015 at 5:39
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
knileknile
2983 silver badges15 bronze badges
1