Что такое pid в командной строке

Как узнать PID (идентификатор процесса) в Windows

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

В данной статье показаны действия, с помощью которых можно узнать PID (идентификатор процесса) в операционной системе Windows.

Идентификатор процесса (process identifier, PID) — уникальный номер процесса в операционной системе Windows.

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

При необходимости можно узнать PID (идентификатор процесса).

Как узнать PID (идентификатор процесса) в диспетчере задач

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

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

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Как узнать PID (идентификатор процесса) в командной строке

Также узнать PID (идентификатор процесса) можно используя командную строку.

Запустите командную строку и выполните следующую команду:

Найдите нужный процесс, в столбце PID будет отображен идентификатор процесса.

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

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

Найдите нужный процесс, в строке PID будет отображен идентификатор процесса.

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

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

Источник

Как узнать PID процесса в Linux

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

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

Как узнать pid процесса Linux

ps aux | grep имя_процесса

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Кроме нужного нам процесса, утилита также выведет PID для grep, ведь процесс был запущен во время поиска. Чтобы его убрать, добавляем такой фильтр:

Например, узнаём PID всех процессов, имя которых содержит слово «Apache»:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

2. pgrep

Если вам не нужно видеть подробную информацию о процессе, а достаточно только PID, то можно использовать утилиту pgrep:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

По умолчанию утилита ищет по командной строке запуска процесса, если нужно искать только по имени процесса, то надо указать опцию -f:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

3. pidof

Эта утилита ищет PID конкретного процесса по его имени. Никаких вхождений, имя процесса должно только совпадать с искомым:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

С помощью опции -s можно попросить утилиту выводить только один PID:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

4. pstree

Утилита pstree позволяет посмотреть список дочерних процессов для определённого процесса, также их pid-идентификаторы. Например, посмотрим дерево процессов Apache:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Как узнать PID скрипта

Когда вы запускаете скрипт в оболочке, например Bash запускается процесс известный как подоболочка и выполняет последовательно все команды скрипта. Чтобы узнать PID процесса подоболочки Bash, запущенной для скрипта, обратитесь к специальной переменной $$. Эта переменная доступна только для чтения, поэтому вы не сможете ее редактировать:

Каким процессом занят файл Linux

Выше мы рассмотрели, как получить PID процесса Linux по имени, а теперь давайте узнаем PID по файлу, который использует процесс. Например, мы хотим удалить какой-либо файл, а система нам сообщает, что он используется другим процессом.

С помощью утилиты lsof можно посмотреть, какие процессы используют директорию или файл в данный момент. Например, откроем аудио-файл в плеере totem, а затем посмотрим, какой процесс использует её файл:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Здесь будет выведен только файл и PID процесса. После PID идёт одна буква, которая указывает, что делает этот процесс с файлом или папкой:

Кто использовал файл в Linux

Узнать процесс, который сейчас занимает файл, достаточно просто. Но как узнать, какой процесс обращается к файлу не надолго, например, выполняет его как программу или читает оттуда данные? Эта задача уже труднее, но вполне решаема с помощью подсистемы ядра auditd. В CentOS набор программ для работы с этой подсистемой поставляется по умолчанию, в Ubuntu же его придётся установить командой:

sudo apt install auditd

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Теперь создаём правило для мониторинга. Например, отследим, кто запускает утилиту who:

Теперь выполним один раз who и посмотрим, что происходит в логе с помощью команды ausearch:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

ps aux | grep 15595

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Становиться понятно, что это bash.

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

Иногда необходимо узнать PID Linux-программы, которая использует сетевой порт, например 80. Для этого можно использовать утилиту ss:

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Мы видим, что это несколько процессов Apache. Использовав опцию dport, можно узнать, какой процесс отправляет данные на указанный порт:

Выводы

В этой статье мы рассмотрели, как узнать PID процесса в Linux по различным условиям: имени или файлу. Как видите, всё достаточно просто, и в считанные минуты можно можно понять, что происходит с вашей операционной системой, и какой процесс за это отвечает.

Источник

Что такое PID? Или на первый-второй рассчитайся!

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

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Функции операционной системы

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

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Базовые понятия

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

Процесс – это любой объект, использующий ресурсы системы, согласно стандарту ISO. 9000:2000 – совокупность операций, взаимодействие которых преобразует входящие данные в исходящие.

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Любой процесс характеризуется несколькими параметрами:

Процесс создается операционной системой с момента запуска или при получении соответствующего запроса. Завершение происходит путем сбора статистической информации с последующим удалением и взаимодействием с очередью планирования и выделением ресурсов. С теоретической базой покончено, пора дать ответ на важнейший вопрос, что такое pid.

Понятие идентификатора

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

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

Разрешается использование уникального номера для поиска потенциально вредоносного ПО. Дело в том, что вирусы часто маскируются под «благопристойные» файлы, указатель же дает четкое представление о безопасности рассматриваемого объекта. Нужно только уметь распознать, «что такое pid» из кодового потока системных и менее значительных процессов.

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Современные языки программирования позволяют «вычленить» из обычного номера информацию об интересующем объекте. На программном уровне можно разработать код, напрямую взаимодействующий с pid. Что это дает? Ценой пары кликов удастся вывести полный путь к интересующему файлу или программе. По сути, это позволит не только понять и оптимизировать работу системы (количество необходимых ресурсов), но и защитить машину от потенциальной угрозы.

Чтобы не запутаться

В электронике существует и pid-регулятор – электронное устройство, использующееся в системах автоматического управления. Позволяет не только формировать сигнал управления, но и влиять на показатели точности и качества переходного процесса.

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Многие пользователи путают два понятия, но они абсолютно разные. После прочтения статьи окончательно должен иссякнуть вопрос, «что такое pid процесса», так как приведенные сведения дают полное описание и возможности указателя. Важно понимать, что функционирование «операционки» напрямую зависит от каждого винтика фундаментальной системы. Сегодня был рассмотрена лишь частичка на микроуровне компьютера как машины.

Источник

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

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

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.

Источник

Процессы

Процессы – действующее начало. В общем случае с процессом связаны код и данные в виртуальной оперативной памяти, отображение виртуальной памяти на физическую, состояние процессора (регистры, текущая исполняемая инструкция и т.п.). Кроме того в Unix с процессом связана информация о приоритете (в том числе понижающий коэффициент nice ), информация об открытых файлах и обработчиках сигналов. Программа, выполняемая внутри процесса, может меняться в течение его существования.

Создание процессов fork()

После создания, дочерний процесс может загрузить в свою память новую программу (код и данные) из исполняемого файла вызовом execve(const char *filename, char *const argv [], char *const envp[]);

Процесс init

В момент загрузки ядра создаётся особый процесс с PID=1, который должен существовать до перезагрузки ОС. Все остальные процессы в системе являются его дочерними процессами (или дочерними от дочерних и т.д.). Обычно, в первом процессе исполняется программа init поэтому в дальнейшем я буду называть его «процесс init«.

В современных дистрибутивах классическая программа init заменена на systemd, но сущности процесса с PID=1 это не меняет.

Для того, чтобы выполнить эти два пункта через загрузчик в начального init два параметра:

Если второй параметр опущен то ищется имя зашитое в начальный init по умолчанию.

Если вы загрузите вместо init /bin/bash, как в моём примере, то сможете завершить первый и единственный процесс командой exit и пронаблюдать сообщение:

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

Каждый процесс имеет уникальный на данный момент времени идентификатор PID. Поменять PID процесса невозможно.

Максимальное значение PID в Linux равняется PID_MAX-1. Текущее значение PID_MAX можно посмотреть командой:

По умолчанию это 2^16 (32768) однако в 64-разрядных Linux его можно увеличить до 2^22 (4194304):

UID и GID

С процессом связано понятие «владельца» и «группы», определяющие права доступа процесса к другим процессам и файлам в файловой системе. «Владелец» и «группа», это числовые идентификатор UID и GID, являющийся атрибутами процесса. В отличие от файла, процесс может принадлежать нескольким группам одновременно. Пользователь в диалоговом сеансе имеет право на доступ к своим файлам поскольку диалоговая программа (shell), которую он использует, выполняется в процессе с тем же UIDом, что и UID, указанный в атрибутах файлов.

Процесс может поменять своего владельца и группу в двух случаях:

Жизненный цикл процесса

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

Создание процесса

Запуск программы

В оперативной памяти процесса находятся код и данные, загруженные из файла. При запуске программы из командной строки, обычно создается новый процесс и в его память загружается файл с программой. Загрузка файла делается вызовом одной из функций семейства exec (см. man 3 exec ). Функции отличаются способом передачи параметров, а также тем, используется ли переменная окружения PATH для поиска исполняемого файла. Например execl в качестве первого параметра принимает имя исполняемого файла, вторым и последующими – строки аргументы, передаваемые в argv[], и, наконец, последний параметр должен быть NULL, он дает процедуре возможность определить, что параметров больше нет.

Пример exec с двумя ошибками:

Ошибка 2: Поскольку код из файла /bin/ls будет загружен в текущий процесс, то старый код и данные, в том числе printf(«Программа ls запущена успешно\n»), будет затерты. Первый printf не сработает никогда.

Завершение процесса

_exit() может быть вызван несколькими путями.

Удаление завершенного процесса из таблицы процессов

Вызов wait(&status); эквивалентен waitpid(-1, &status, 0);

Статус завершения проверяется макросами:

Основы планирования процессов

Для обеспечения многозадачности каждый пользовательский процесс периодически прерывается, его контекст сохраняется, а управление передаётся другому процессу. Прерывание выполнения процесса может происходить по таймеру или во время обработки системного вызова. В зависимости от обстоятельств прерванный процесс ставится в очередь процессов на исполнение, в список процессов ожидающих ресурсы (например, ожидание пользовательского ввода или завершения вывода на физический носитель) или в список остановленных процессов.

Прерывания по таймеру происходят в соответствии с квантом времени, выделенному процессу. В Linux квант времени по умолчанию (DEF_TIMESLICE) равен 0,1 секунды, но может быть пересчитан планировщиком процессов ( sheduler ).

После завершения процесса вызовом _exit() или по сигналу все его ресурсы (память, открытые файлы) освобождаются, но запись в таблице процессов остаётся и занимает PID. Такой процесс называется «зомби» и должен быть явно очищен из таблицы процессов вызовом wait() в родительском процессе. Если родительский процесс завершился раньше дочерних, то всем его дочерним процессам приписывается значение PPID (parent pid) равное 1, возлагая обязательства по очистке от них таблицы процессов на особый процесс init с PID=1.

На диаграмме показаны различные состояния процесса

Что такое pid в командной строке. Смотреть фото Что такое pid в командной строке. Смотреть картинку Что такое pid в командной строке. Картинка про Что такое pid в командной строке. Фото Что такое pid в командной строке

В Linux команда ps использует следующие обозначения состояния процесса:

Планировщик процессов

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

Простейшая реализация очереди в виде FIFO очень быстра, но не поддерживает приоритеты и многопроцессорность. В Linux 2.6 воспользовались простотой FIFO, добавив к ней несколько усовершенствований:

Процесс Idle

Если нет процессов готовых для выполнения, то планировщик вызывает нить (процесс) Idle. В Linux 2.2 однопроцессорная кроссплатформенная версия Idle выглядела так:

В аппаратно-зависимую реализацию idle() может быть вынесено управление энергосбережением.

В ранних версиях Linux процесс Idle имел PID=0, но, вообще говоря, Idle как самостоятельный процесс не существует.

Вычисление средней загрузки

Эффективные права процесса

euid равный нулю используется для обозначения привилегированного процесса, имеющего особые права на доступ к ФС и другим процессам, а так же на доступ к административным функциям ядра, таким как монтирование диска или использование портов TCP с номерами меньше 1024. Процесс с euid=0 всегда имеет право на чтение и запись файлов и каталогов. Право на выполнение файлов предоставляется привилегированному процессу только в том случае, когда у файла выставлен хотя бы один атрибут права на исполнение.

(re)uid/(re)gid, а также вспомогательные группы, наследуются от родительского процесса при вызове fork(). При вызове exec() ruid/rgid сохраняются, а euid/egid могут быть изменены если у исполняемого файла выставлен флаг смены владельца. Для скриптов флаг смены владельца игнорируется т.к. фактически запускается интерпретатор, а скрипт передаётся ему в качестве параметра. В момент входа пользователя в систему программа login считывает из файлов /etc/passwd и /etc/group необходимые величины и устанавливает их перед загрузкой командного интерпретатора.

Для инициализации вспомогательных групп в Linux можно воспользоваться функцией int initgroups(const char *user, gid_t group); эта функция разбирает файл /etc/group, а за тем обращается к системному вызову int setgroups(size_t size, const gid_t *list);.

В Linux, HP-UX и некоторых других ОС дополнительно поддерживаются атрибут сохраненных прав процесса suid/sgid (не путать с одноименными атрибутами файла). Соответственно есть функция для установки всех трёх атрибутов setresuid(rid,eid,sid);

Если euid=0 или ruid=0 то ruid и euid могут меняться произвольно. Т.е. можно сделать euid<>0 или ruid<>0, а затем вернуться в состояние euid=ruid=0. Если оба атрибута не равны нулю, то возможно лишь изменение euid в ruid (отказ от дополнительных прав). Программа su получает euid=0 благодаря соответствующему атрибуту файла и использует возможности привилегированного процесса для запуска программ от имени произвольного пользователя (в том числе root). Веб-сервер apache, наоборот, стартует с ruid=euid=0, но затем отбирает у себя лишние права меняя ruid и euid на непривилегированные значения.

Источник

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

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