- Работа с процессами в Linux
- Список процессов
- Как узнать PID процесса в Linux
- Как узнать pid процесса Linux
- 2. pgrep
- 3. pidof
- 4. pstree
- Как узнать PID скрипта
- Каким процессом занят файл Linux
- Кто использовал файл в Linux
- Какой процесс использует порт в Linux
- Выводы
- Как найти имя процесса, используя номер pid в Linux — Centos — 2021
- rytp баÑбоÑÐºÐ¸Ð½Ñ Ð±ÐµÐ· маÑа VIDEOMEGA RU (Октябрь 2021).
- Table of Contents:
- Узнать номер процесса PID
- Узнать имя процесса, используя номер PID
- Имя процесса из его pid в linux
- 5 ответов
Работа с процессами в Linux
Список процессов
Вывести на экран список текущих процессов, запущенных пользователем, можно командой:
Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:
Мы увидим, примерно, следующее:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 661 0.0 0.0 4072 8 tty1 Ss+ Jul03 0:00 /sbin/mingetty
root 662 0.0 0.0 4072 8 tty2 Ss+ Jul03 0:00 /sbin/mingetty
root 16355 0.0 0.0 171636 3308 pts/0 S 15:46 0:00 sudo su
root 16366 0.0 0.0 140896 1556 pts/0 S 15:46 0:00 su
root 16368 0.0 0.0 108316 1944 pts/0 S 15:46 0:00 bash
root 18830 0.0 0.0 110244 1172 pts/0 R+ 16:20 0:00 ps u
- USER — учетная запись пользователя, от которой запущен процесс.
- PID — идентификатор процесса.
- %CPU — потребление процессорного времени в процентном эквиваленте.
- %MEM — использование памяти в процентах.
- VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
- RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
- TTY — терминал, из под которого был запущен процесс.
- STAT — текущее состояние процесса. Могут принимать значения:
- R — выполнимый процесс;
- S — спящий;
- D — в состоянии подкачки на диске;
- T — остановлен;
- Z — зомби.
- W — не имеет резидентных страниц;
- Дмитрий Моск — IT-специалист.
Настройка серверов, компьютерная помощь.
Как управлять процессами в операционной системе Linux
Источник
Как узнать PID процесса в Linux
Каждый процесс в операционной системе имеет свой уникальный идентификатор, по которому можно получить информацию об этом процессе, а также отправить ему управляющий сигнал или завершить.
В Linux такой идентификатор называется PID, и узнать его можно несколькими способами. В этой статье мы рассмотрим, как узнать PID процесса в Linux, а также зачем это может вам понадобиться.
Как узнать pid процесса Linux
Самый распространённый способ узнать PID Linux — использовать утилиту ps:
ps aux | grep имя_процесса
Кроме нужного нам процесса, утилита также выведет PID для grep, ведь процесс был запущен во время поиска. Чтобы его убрать, добавляем такой фильтр:
ps aux | grep имя_процесса | grep -v grep
Например, узнаём PID всех процессов, имя которых содержит слово «Apache»:
ps aux | grep apache | grep -v grep
2. pgrep
Если вам не нужно видеть подробную информацию о процессе, а достаточно только PID, то можно использовать утилиту pgrep:
По умолчанию утилита ищет по командной строке запуска процесса, если нужно искать только по имени процесса, то надо указать опцию -f:
3. pidof
Эта утилита ищет PID конкретного процесса по его имени. Никаких вхождений, имя процесса должно только совпадать с искомым:
С помощью опции -s можно попросить утилиту выводить только один PID:
pidof -s apache2
4. pstree
Утилита pstree позволяет посмотреть список дочерних процессов для определённого процесса, также их pid-идентификаторы. Например, посмотрим дерево процессов Apache:
pstree -p | grep apache2
Как узнать PID скрипта
Когда вы запускаете скрипт в оболочке, например Bash запускается процесс известный как подоболочка и выполняет последовательно все команды скрипта. Чтобы узнать PID процесса подоболочки Bash, запущенной для скрипта, обратитесь к специальной переменной $$. Эта переменная доступна только для чтения, поэтому вы не сможете ее редактировать:
#!/bin/bash
echo «PID этого скрипта: $$»
Каким процессом занят файл Linux
Выше мы рассмотрели, как получить PID процесса Linux по имени, а теперь давайте узнаем PID по файлу, который использует процесс. Например, мы хотим удалить какой-либо файл, а система нам сообщает, что он используется другим процессом.
С помощью утилиты lsof можно посмотреть, какие процессы используют директорию или файл в данный момент. Например, откроем аудио-файл в плеере totem, а затем посмотрим, какой процесс использует её файл:
В начале строки мы видим название программы, а дальше идёт её PID. Есть ещё одна утилита, которая позволяет выполнить подобную задачу — это fuser:
Здесь будет выведен только файл и PID процесса. После PID идёт одна буква, которая указывает, что делает этот процесс с файлом или папкой:
- c — текущая директория;
- r — корневая директория;
- f — файл открыт для чтения или записи;
- e — файл выполняется как программа;
- m — файл подключен в качестве библиотеки.
Кто использовал файл в Linux
Узнать процесс, который сейчас занимает файл, достаточно просто. Но как узнать, какой процесс обращается к файлу не надолго, например, выполняет его как программу или читает оттуда данные? Эта задача уже труднее, но вполне решаема с помощью подсистемы ядра auditd. В CentOS набор программ для работы с этой подсистемой поставляется по умолчанию, в Ubuntu же его придётся установить командой:
sudo apt install auditd
Теперь создаём правило для мониторинга. Например, отследим, кто запускает утилиту who:
auditctl -w /usr/bin/who -p x -k who_exec
Здесь -w — адрес файла, который мы будем отслеживать, —p — действие, которое нужно отслеживать, —k — произвольное имя для правила. В качестве действия могут использоваться такие варианты:
- x — выполнение;
- w — запись;
- r — чтение;
- a — изменение атрибутов.
Теперь выполним один раз who и посмотрим, что происходит в логе с помощью команды ausearch:
sudo ausearch -i -k who_exec
Здесь в секции SYSCALL есть PID процесса, под которым была запущена программа, а также PPID — программа, которая запустила нашу who. Копируем этот PID и смотрим информацию о нём с помощью ps:
ps aux | grep 15595
Становиться понятно, что это bash.
Какой процесс использует порт в Linux
Иногда необходимо узнать PID Linux-программы, которая использует сетевой порт, например 80. Для этого можно использовать утилиту ss:
sudo ss -lptn ‘sport = :80’
Мы видим, что это несколько процессов Apache. Использовав опцию dport, можно узнать, какой процесс отправляет данные на указанный порт:
sudo ss -lptn ‘dport = :80’
Выводы
В этой статье мы рассмотрели, как узнать PID процесса в Linux по различным условиям: имени или файлу. Как видите, всё достаточно просто, и в считанные минуты можно можно понять, что происходит с вашей операционной системой, и какой процесс за это отвечает.
Источник
Как найти имя процесса, используя номер pid в Linux — Centos — 2021
rytp баÑбоÑÐºÐ¸Ð½Ñ Ð±ÐµÐ· маÑа VIDEOMEGA RU (Октябрь 2021).
Table of Contents:
, мы посмотрим, как найти имя процесса по его идентификационному номеру (PID). Прежде чем мы углубимся в реальное решение, давайте кратко поговорим о том, как процессы создаются и идентифицируются в Linux.
Каждый раз, когда пользователь или система (Linux) запускает программу, ядро создает процесс. Процесс хранит в памяти детали выполнения программы, такие как входные и выходные данные, переменные и так далее.
Важно отметить, что, поскольку Linux является многозадачной операционной системой, она выполняет несколько программ одновременно, и это означает, что каждый процесс должен быть определен отдельно.
Ядро идентифицирует каждый процесс, используя идентификатор процесса ( PID ), каждый экземпляр процесса должен иметь уникальный PID из других процессов, который назначается при вызове процесса, чтобы избежать каких-либо ошибок выполнения.
Файловая система / proc хранит информацию о текущих запущенных процессах в вашей системе и содержит каталоги для каждого процесса.
Используйте команду ls для вывода списка содержимого, однако список может быть длинным, поэтому используйте конвейер и утилиту less для просмотра содержимого / proc более удобным способом, как показано ниже:
$ ls / proc ИЛИ $ ls / proc | Меньше
List / proc Файловая система
1 168 2230 25 329 584 7386 83 schedstat драйвера 10 169 2234 2503 33 603 74 830 execdomains scsi 1070 17 2247 2507 34 610 7411 833 fb self 1081 1702 2256 2523 349 611 7423 836 файловых систем slabinfo 109 1714 2258 253 35 612 745 839 fs softiq 11 173 2266 2551 36 613 746 84 прерывания стат 110 1760 2273 26 362 62 75 844 обмен Iomem 1188 1763 2278 2688 3642 63 7533 85 ioports sys 12 1769 2282 2694 3643 64 7589 86 irq sysrq-trigger 1204 177 2283 2695 37 6436 76 860 kallsyms sysvipc 1209 1773 2285 2698 38 65 7619 87 kcore thread-self 1254 18 2287 2699 39 66 7689 9 ключей timer_list 13 1847 2295 27 3974 67 7690 94 ключевых пользователя timer_stats 15 1914 23 2702 3976 68 77 977 кмсг tty 152 1917 2308 28 4273 6897 7725 981 kpagecgroup время безотказной работы 153 1918 2309 280 4374 69 7729 987 kpagecount версия 154 1938 2310 2815 4392 6969 7733 997 kpageflags version_signature 155 1956 2311 2817 44 6980 78 acpi loadavg vmallocinfo 156 1981 2315 282 45 7 79 28 153 133 153 ls1565 м 4543 70 790 buddyinfo mdstat z oneinfo 1567 1988 2317 29 46 71 8 шина meminfo 157 2 2324 2935 461 7102 80 cgroups misc 1579 20 2347 2944 4686 72 808 cmdline модули 158 2010 2354 3 47 73 81 монтирование консолей 1584 2043 2436 30 4700 7304 810 cpuinfo mtrr 159 2044 2437 3016 5 7311 815 crypto net 1590 21 2442 31 515 7322 82 устройства pagetypeinfo 16 2167 2443 318 5273 7347 820 разделов на дисковых серверах 160 22 2492 32 5274 7367 823 dma sched_debug
На приведенном выше снимке экрана в пронумерованных каталогах хранятся информационные файлы о процессах, которые выполняются, причем каждый номер соответствует PID .
Ниже приведен список файлов для процесса systemd с PID 1 :
Показать идентификатор процесса SystemD
ls: не может прочитать символическую ссылку ‘/ proc / 1 / cwd’: в разрешении отказано ls: не может прочитать символическую ссылку ‘/ proc / 1 / root’: в доступе отказано ls: не может прочитать символическую ссылку ‘/ proc / 1 / exe’: разрешение Отказано в атрибуте coredump_filter gid_map mountinfo oom_score schedstat status автогруппа процессора io монтирует oom_score_adj sessionid системный вызов auxv cwd ограничивает mountstats страница карт setgroups задача cgroup окружающую среду loginuid сетевая личность smaps таймеры таймеры
Вы можете отслеживать процессы и их PID с помощью традиционных команд Linux, таких как ps, top и относительно новая команда glances, а также многие другие, как в примерах ниже:
Показать запущенные процессы с PID
USER PID% CPU% MEM VSZ RSS TTY STAT STAT TIME START TIME КОМАНДА root 1 0, 0 0, 0 185728 6268? Сс 10:15 0:01 / sbin / init splash root 2 0, 0 0, 0 0 0? S 10:15 0:00 root 3 0, 0 0, 0 0 0? S 10:15 0:00 root 5 0, 0 0, 0 0 0? S
Мониторинг процессов Linux с помощью верхней команды
Мониторинг процессов в Linux с помощью glances — нового инструмента мониторинга процессов в реальном времени для Linux.
Glances — Мониторинг Linux-процессов в реальном времени
Узнайте больше о том, как установить Glances в системах Linux.
Узнать номер процесса PID
Чтобы узнать PID процесса, вы можете использовать pidof , простую команду для вывода PID процесса:
$ pidof firefox $ pidof python $ pidof корица
Найти PID процесса Linux
Возвращаясь к нашей цели, предполагая, что вы уже знаете PID процесса, вы можете напечатать его имя, используя форму команды ниже:
$ ps -p PID -o формат
- -p указывает PID
- -o формат включает определяемый пользователем формат
Узнать имя процесса, используя номер PID
В этом разделе мы увидим, как узнать имя процесса, используя его номер PID, с помощью определенного пользователем формата, т.е. comm= что означает имя команды, такое же, как имя процесса.
$ ps -p 2523 -o comm = $ ps -p 2295 -o comm =
Найти имя процесса Linux
Для получения дополнительной информации об использовании и параметров, просмотрите страницу руководства ps .
На данный момент, если вы знаете какой-либо другой лучший способ узнать имя процесса с помощью PID, поделитесь с нами через наш раздел комментариев ниже.
Источник
Имя процесса из его pid в linux
Как получить имя процесса из его pid ? Например, я выполняю cat file1.txt, но я хочу выяснить, что команда cat и ее аргументы, так как ее pid в системе. Есть ли структура, чтобы определить это или что-то подобное? Есть идеи?
5 ответов
нет никакого общего способа сделать это unix.
каждая ОС имеет разные способы справиться с этим, и некоторые из них очень сложны. Вы упомянули Linux. В Linux информация находится в файловой системе /proc.
чтобы получить командную строку для идентификатора процесса 9999, прочитайте файл /proc/9999/cmdline .
в linux вы можете посмотреть в /proc/ . Попробуйте ввести man proc для получения дополнительной информации. Содержание /proc/$PID/cmdline даст вам командную строку, что процесс $PID был запущен. Существует также /proc/self для проверки себя 🙂
альтернативой (например, в Mac OS X) является использование libproc . См.libproc.h.
POSIX C не поддерживает стандартный API для получения имени процесса по PID.
в linux вы можете получить имя с помощью Linux proc API:/proc/$PID / cmdline. И код выглядит так:
чтобы получить имя процесса id процесса, скажем 9000, используйте эту команду:
пока на этот вопрос был дан ответ, я хотел бы добавить свои 2 цента.
в моем случае, когда процесс 1111 создает процесс 22222 через канал (по крайней мере, это то, что я слышал), /proc/2222/cmdline не дает правильного имени процесса, а вместо этого дает что-то вроде 1111_1. Я должен использовать /proc/2222 / comm, чтобы получить правильное имя процесса.
Источник