как узнать pid процесса в linux

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

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

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

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

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 47 40. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 47 40. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 47 40.

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

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 47 25. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 47 25. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 47 25.

2. pgrep

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 47 56. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 47 56. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 47 56.

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 48 03. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 48 03. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 48 03.

3. pidof

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 48 28. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 48 28. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 48 28.

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 48 38. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 48 38. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 48 38.

4. pstree

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 53 26. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 53 26. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 53 26.

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

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

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

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

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 14 45 44. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 14 45 44. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 14 45 44.

как узнать pid процесса в linux. otussysadmin. как узнать pid процесса в linux фото. как узнать pid процесса в linux-otussysadmin. картинка как узнать pid процесса в linux. картинка otussysadmin.

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 14 46 21. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 14 46 21. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 14 46 21.

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

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

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

sudo apt install auditd

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 14 55 51. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 14 55 51. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 14 55 51.

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

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 05 18. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 05 18. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 05 18.

ps aux | grep 15595

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 05 40. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 05 40. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 05 40.

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

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

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

как узнать pid процесса в linux. Snimok ekrana ot 2018 08 28 15 12 30. как узнать pid процесса в linux фото. как узнать pid процесса в linux-Snimok ekrana ot 2018 08 28 15 12 30. картинка как узнать pid процесса в linux. картинка Snimok ekrana ot 2018 08 28 15 12 30.

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

Выводы

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

Источник

Команда Pidof в Linux

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

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

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

Команда принимает в качестве аргументов ноль или более имен, но обычно в pidof передается только одно имя.

При вызове без какой-либо опции, pidof распечатает PID всех запущенных программ, которые соответствуют заданному имени. Например, чтобы найти PID SSH-сервера, вы должны запустить:

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

Этот параметр работает только при pidof от имени пользователя root или sudo :

Пример использования команды pidof

В следующем примере показано, как использовать команду pidof в сочетании с командой kill для завершения программы.

Команда распечатает все процессы Firefox:

Как только вы узнаете, что Firefox обрабатывает PID, отправьте сигнал SEGTERM чтобы завершить их все:

Выводы

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

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

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

Источник

Убиваем процессы в Linux — команды ps, kill и killall

Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:

То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps.

Если процесс gcalctool запущен, то мы получим:

Есть еще один более простой способ узнать PID процесса — это команда pidof, которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:

«Убиваем» процесс командой kill

Сигнал SIGTERM может и не остановить процесс (например, при перехвате или блокировке сигнала), SIGKILL же выполняет уничтожение процесса всегда, так как его нельзя перехватить или проигнорировать.

Убиваем процессы командой killall

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:

Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s. Например:

Заключение

Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):

Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1, залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7.

Справку по использованию любой команды можно получить командой man:

Источник

Как найти мой PID в Java или JRuby на Linux?

Мне нужно найти PID текущего запущенного процесса на платформе Linux (это может быть зависимое системное решение). Java не поддерживает получение идентификатора процесса, и JRuby в настоящее время имеет ошибку с методом Ruby, Process.пид-регулятор.

есть ли другой способ получить PID?

6 ответов

Если у вас procfs установлен, вы можете найти идентификатор процесса через символическую ссылку /proc/self, которая указывает на каталог, имя которого является pid (здесь также есть файлы с другой соответствующей информацией, включая PID, но каталог-это все, что вам нужно в этом случае).

таким образом, с Java, вы можете сделать:

в JRuby вы можете использовать одно и то же решение:

специальные спасибо канал #stackoverflow на свободном узле для помогите мне решить эту проблему! (в частности, Jerub, gregh и сайт topdeck)

тестируется только в Linux с помощью Sun JVM. Может не работать с другими реализациями JMX.

вы можете использовать интерфейс JNI для вызова функции POSIX getpid(). Это довольно прямолинейно. Вы начинаете с класса для функций POSIX, которые вам нужны. Я называю это POSIX.java :

скомпилировать его с

после этого вы создаете заголовочный файл POSIX.h С

файл заголовка содержит прототип C для функции с обертыванием функции getpid. Теперь вам нужно реализовать функцию, которая довольно простой. Я сделал это в POSIX.c :

теперь вы можете скомпилировать его с помощью gcc:

вы должны указать место где установлена платформа Java. Вот и все. Теперь вы можете использовать его. Создайте простую программу getpid:

скомпилировать его с javac getpid.java и запустить его:

первый pid написан оболочкой, а второй написан программой Java после того, как приглашение оболочки вернулось. ∎

Spawn процесс оболочки, который будет читать pid своего родителя. Это должно быть наш пид. Вот рабочий код, без исключения и обработка ошибок.

Это решение кажется лучшим, если PID должен быть получен только для выдачи другой команды оболочки. Достаточно обернуть команду в обратные кавычки, чтобы передать ее в качестве аргумента другой команде, например:

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

вы можете попробовать getpid() в JNR-Posix.

Он также имеет оболочку Windows POSIX, которая вызывает getpid () от libc. Нет необходимости в JNI.

Java 9 наконец предлагает официальный способ сделать это с ProcessHandle:

сначала получает ProcessHandle ссылка для текущего процесса.

Источник

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

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

В этой статье будет затронута обширная тема, мы рассмотрим такие возможности:

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

Что такое процесс?

Например, посмотрим папку процесса 1. В папке есть другие под каталоги и много файлов. Файл cmdline содержит информацию о команде запуска процесса:

Поскольку у меня используется система инициализации Systemd, то и первый процесс запускается для нее. С помощью каталога /proc можно сделать все. Но это очень неудобно, особенно учитывая количество запущенных процессов в системе. Поэтому для реализации нужных задач существуют специальные утилиты. Перейдем к рассмотрению утилит, которые позволяют реализовать управление процессами в Linux.

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

Давайте установим htop, если она у вас еще не установлена. В Ubuntu это делается так:

sudo apt install htop

В других дистрибутивах вам нужно просто использовать свой менеджер пакетов. Имя пакета такое же.

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

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

Открыв htop, мы сразу видим список запущенных процессов. Конечно, здесь отображены не все процессы linux, их-то в системе очень много, вы уже знаете, все они на один экран не поместятся. По умолчанию выводятся процессы, запущенные от имени вашего пользователя:

как узнать pid процесса в linux. htop. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop. картинка как узнать pid процесса в linux. картинка htop.

Вы можете увидеть такую информацию о процессе:

К отображению можно добавить и дополнительные параметры, но эти главные. Добавить параметры можно с помощью меню Setup. Там все очень просто, читайте подсказки и следуйте указаниям. Например, добавлен параметр PPID:

как узнать pid процесса в linux. htop1. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop1. картинка как узнать pid процесса в linux. картинка htop1.

Очень важной особенностью программы есть то, что вы можете сортировать процессы в Linux по нужному параметру. Просто кликните по названию параметра, оно выделится зеленым и будет выполнена сортировка. Например, хотите посмотреть в каком порядке запускались процессы, сортируем по PID:

как узнать pid процесса в linux. htop2. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop2. картинка как узнать pid процесса в linux. картинка htop2.

Также есть интересная возможность разместить процессы в виде дерева. Вы сможете увидеть, каким процессом был запущен тот или иной процесс. Для отображения дерева нажмите кнопку F5:

как узнать pid процесса в linux. htop3. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop3. картинка как узнать pid процесса в linux. картинка htop3.

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

как узнать pid процесса в linux. ps. как узнать pid процесса в linux фото. как узнать pid процесса в linux-ps. картинка как узнать pid процесса в linux. картинка ps.

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

Одним словом, чтобы посмотреть все активные на данный момент процессы в linux, используется сочетание опций aux:

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

как узнать pid процесса в linux. ps1. как узнать pid процесса в linux фото. как узнать pid процесса в linux-ps1. картинка как узнать pid процесса в linux. картинка ps1.

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

Казалось бы, у ps нет возможности стоить деревья процессов. Но не совсем, для этого существует отдельная команда:

как узнать pid процесса в linux. pstree. как узнать pid процесса в linux фото. как узнать pid процесса в linux-pstree. картинка как узнать pid процесса в linux. картинка pstree.

Поиск процессов в Linux

Чтобы найти процесс linux в htop можно использовать кнопку F3. Нажмите F3 и наберите нужное слово. Дальше чтобы перейти к следующему вхождению нажимайте F2 или Esc для завершения поиска:

как узнать pid процесса в linux. htop4. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop4. картинка как узнать pid процесса в linux. картинка htop4.

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

как узнать pid процесса в linux. htop6. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop6. картинка как узнать pid процесса в linux. картинка htop6.

В утилите ps фильтрации нет, но зато мы можем использовать утилиту grep, перенаправив вывод ps на нее чтобы найти процесс linux:

ps aux | grep chromium

Это очень часто употребляемая команда.

Изменение приоритета процессов

как узнать pid процесса в linux. otussysadmin. как узнать pid процесса в linux фото. как узнать pid процесса в linux-otussysadmin. картинка как узнать pid процесса в linux. картинка otussysadmin.

Но и для решения этой задачи управления процессами Linux необязательно использовать htop. Вы можете сделать все и другими командами. Например, команда nice. С помощью нее вы можете указать приоритет для запускаемого процесса:

Или изменить приоритет для уже существующего по его pid:

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

как узнать pid процесса в linux. htop7. как узнать pid процесса в linux фото. как узнать pid процесса в linux-htop7. картинка как узнать pid процесса в linux. картинка htop7.

Система для управления процессами использует определенные сигналы, есть сигналы, которые указывают процессу завершиться. Вот несколько основных сигналов:

Вообще сигналов есть несколько десятков, но мы не будем их рассматривать. Отправим сигнал SIGKILL:

Также можно воспользоваться утилитой kill:

Также можно уничтожить процесс по имени:

Ограничение процессов

Управление процессами в Linux позволяет контролировать практически все. Вы уже видели что можно сделать, но можно еще больше. С помощью команды ulimit и конфигурационного файла /etc/security/limits.conf вы можете ограничить процессам доступ к системным ресурсам, таким как память, файлы и процессор. Например, вы можете ограничить память процесса Linux, количество файлов и т д.

Запись в файле имеет следующий вид:

Жесткие ограничения устанавливаются суперпользователем и не могут быть изменены обычными пользователями. Мягкие, soft ограничения могут меняться пользователями с помощью команды ulimit.

Рассмотрим основные ограничения, которые можно применить к процессам:

Например, ограничим процессорное время для процессов пользователя sergiy:

sergiy hard nproc 20

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

Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 204800 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 23562 23562 processes
Max open files 1024 4096 files
Max locked memory 18446744073708503040 18446744073708503040 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 23562 23562 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us

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

Например, мы можем установить новое ограничение для количества открываемых файлов:

Установим лимит оперативной памяти:

Напоминаю, что это ограничение будет актуально для всех программ, выполняемых в этом терминале.

Выводы

Вот и все. Теперь управление процессами в Linux не вызовет у вас проблем. Мы рассмотрели очень даже подробно эту тему. Если у вас остались вопросы или есть предложения по дополнению статьи, пишите в комментариях!

Источник

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

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