Как найти процесс по pid linux

In this article, we will look at how to find a process name by its process identification number (PID). Before we dive into the actual solution, let us briefly talk about how processes are created and identified by Linux.

Every time a user or the system (Linux) launches a program, the kernel will create a process. A process holds execution details of the program in memory such as its input and output data, variables and so on.

Importantly, since Linux is a multitasking operating system, it executes several programs simultaneously, and this means each process process must be identified specifically.

The kernel identifies each process using a process ID (PID), a every instance of process must have a unique PID from other processes which is assigned when the process is invoked, to avoid any execution errors.

The /proc file system stores information about currently running processes on your system, it contains directories for each process.

Use the ls command to list its contents, however, the list may be long, so employ a pipeline and the less utility to view the /proc contents in a more convenient way as below:

$ ls /proc 
OR
$ ls /proc | less 

List /proc File System

1     168   2230  25    329   584   7386  83         driver        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        filesystems   slabinfo
109   1714  2258  253   35    612   745   839        fs            softirqs
11    173   2266  2551  36    613   746   84         interrupts    stat
110   1760  2273  26    362   62    75    844        iomem         swaps
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          keys          timer_list
13    1847  2295  27    3974  67    7690  94         key-users     timer_stats
15    1914  23    2702  3976  68    77    977        kmsg          tty
152   1917  2308  28    4273  6897  7725  981        kpagecgroup   uptime
153   1918  2309  280   4374  69    7729  987        kpagecount    version
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    asound     locks         vmstat
1565  1986  2316  283   4543  70    790   buddyinfo  mdstat        zoneinfo
1567  1988  2317  29    46    71    8     bus        meminfo
157   2     2324  2935  461   7102  80    cgroups    misc
1579  20    2347  2944  4686  72    808   cmdline    modules
158   2010  2354  3     47    73    81    consoles   mounts
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    devices    pagetypeinfo
16    2167  2443  318   5273  7347  820   diskstats  partitions
160   22    2492  32    5274  7367  823   dma        sched_debug

From the screenshot above, the numbered directories store information files about the processes in execution, where each number corresponds to a PID.

Below is the list of files for systemd process with PID 1:

$ ls /proc/1

Show SystemD Process PID

ls: cannot read symbolic link '/proc/1/cwd': Permission denied
ls: cannot read symbolic link '/proc/1/root': Permission denied
ls: cannot read symbolic link '/proc/1/exe': Permission denied
attr        coredump_filter  gid_map    mountinfo   oom_score      schedstat  status
autogroup   cpuset           io         mounts      oom_score_adj  sessionid  syscall
auxv        cwd              limits     mountstats  pagemap        setgroups  task
cgroup      environ          loginuid   net         personality    smaps      timers
clear_refs  exe              map_files  ns          projid_map     stack      uid_map
cmdline     fd               maps       numa_maps   root           stat       wchan
comm        fdinfo           mem        oom_adj     sched          statm

You can monitor processes and their PIDs using traditional Linux commands such as ps, top and relatively new glances command plus many more as in the examples below:

$ ps aux

Show Running Processes with PID

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 185728  6268 ?        Ss   10:15   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    10:15   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    10:15   0:09 [rcu_sched]
root         8  0.0  0.0      0     0 ?        S    10:15   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/0]
root        10  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/1]
root        12  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/1]
root        13  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/1]
root        15  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/1:0H]
root        16  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/2]
root        17  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/2]
root        18  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/2]
root        20  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/2:0H]
root        21  0.0  0.0      0     0 ?        S    10:15   0:00 [watchdog/3]
root        22  0.0  0.0      0     0 ?        S    10:15   0:00 [migration/3]
root        23  0.0  0.0      0     0 ?        S    10:15   0:00 [ksoftirqd/3]
root        25  0.0  0.0      0     0 ?        S<   10:15   0:00 [kworker/3:0H]
root        26  0.0  0.0      0     0 ?        S    10:15   0:00 [kdevtmpfs]
root        27  0.0  0.0      0     0 ?        S<   10:15   0:00 [netns]
root        28  0.0  0.0      0     0 ?        S<   10:15   0:00 [perf]
....

Monitor Linux processes using traditional top command.

$ top

Monitor Linux Processes with top Command

Monitor Linux Processes with top Command

Monitor Linux processes using glances, a new real-time process monitoring tool for Linux.

$ glances

Glances - Real Time Linux Processes Monitoring

Glances – Real Time Linux Processes Monitoring

Learn more about how to install Glances in Linux systems.

Find Out Process PID Number

To find out the PID of a process, you can use pidof, a simple command to print out the PID of a process:

$ pidof firefox
$ pidof python
$ pidof cinnamon

Find Linux Process PID

Find Linux Process PID

Coming back to our point of focus, assuming you already know the PID of a process, you can print its name using the command form below:

$ ps -p PID -o format 

Where:

  1. -p specifies the PID
  2. -o format enables a user-defined format

Find Out Process Name Using PID Number

In this section, we will see how to find out a process name using its PID number with the help of user defined format i.e comm= which means command name, same as the process name.

$ ps -p 2523 -o comm=
$ ps -p 2295 -o comm=

Find Linux Process Name

Find Linux Process Name

For additional usage information and options, look through the ps man page.

$ man ps

If you want to kill a process using its PID number, I suggest you to read Find and Kill Linux Processes Using its PID.

Thats it for the moment, if you know any other better way to find out a process name using PID, do share with us via our comment section below.

Содержание

  1. Найти процесс по номеру порта в Linux
  2. Пример использования netstat
  3. Пример использования fuser
  4. Пример использования lsof
  5. Список процессов Linux
  6. Список процессов в Linux
  7. 1. Утилита ps
  8. 2. Утилита top
  9. 3. Утилита htop
  10. 4. Программа Gnome Monitor
  11. 5. Утилита atop
  12. Выводы
  13. rytp барбоскины без мата VIDEOMEGA RU (Октябрь 2022).
  14. Table of Contents:
  15. Узнать номер процесса PID
  16. Узнать имя процесса, используя номер PID
  17. Мастер управления неотзывчивыми процессами в Linux
  18. Различные методы убийства мертвого процесса Linux
  19. Завершить неотвечающий процесс из командной строки
  20. Узнайте информацию о PPID
  21. Способ 1: использование команды ps
  22. Способ 2: Использование команды pstree
  23. Способ 3: использование команды pgrep
  24. Способ 4: Использование команды pidof
  25. Способ 5: использование команды top
  26. Убить не отвечающий процесс Linux
  27. Способ 1: использование команды kill
  28. Способ 2: использование команды pkill
  29. Способ 3: использование команды killall
  30. Способ 4: использование удобных однострочников
  31. Способ 5: уничтожение нескольких процессов с помощью шелл-скриптов Linux
  32. Завершить неотвечающий процесс из графического интерфейса
  33. Способ 1: использование приложения xkill
  34. Способ 2. Использование приложения System Monitor в Ubuntu
  35. Послесловие

Найти процесс по номеру порта в Linux

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

Как же вычислить, какие запущенные процессы соотносятся с занятыми портами? Как определить, что за процесс открыл udp-порт 2222, tcp-порт 7777 и т.п.? Получить подобную информацию мы можем нижеперечисленными методами:

netstat утилита командной строки, показывающая сетевые подключения, таблицы маршрутизации и некоторую статистику сетевых интерфейсов; fuser утилита командной строки для идентификации процессов с помощью файлов или сокетов; lsof утилита командной строки, отображающая информацию об используемых процессами файлах и самих процессах в UNIX-системе; /proc/$pid/ в ОС Linux /proc для каждого запущенного процесса содержит директорию (включая процессы ядра) в /proc/$PID с информацией об этом процессе, в том числе и название процесса, открывшего порт.

Использование вышеперечисленных способов может потребовать права супер-пользователя.

Теперь давайте рассмотрим каждый из этих способов по отдельности.

Пример использования netstat

Введём в командную строку команду:

Получим примерно такой результат:

Из вывода видно, что 4942-й порт был открыт Java-приложением с PID’ом 3413. Проверить это можно через /proc :

Примерный результат выполнения команды:

Результат будет примерно такой:

Пример использования fuser

Для того, чтобы вычислить процесс, занимающий порт 5050, введём команду:

И получим результат:

Пример использования lsof

При использовании lsof введите команду по одному из шаблонов:

Пример реального использования:

После этого мы можем получить более полную информацию о процессах с PID’ами 2123, 2124 и т.д..

На выходе получим примерно следующее:

Получить информацию о процессе также можно следующим проверенным способом:

В этом выводе можно выделить следующие параметры:

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

Источник

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

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

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

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

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

1. Утилита ps

Самый простой способ посмотреть список процессов, запущенных в текущей командой оболочке, использовать команду ps без параметров:

Snimok ekrana ot 2020 06 21 20 28 57

Snimok ekrana ot 2020 06 21 20 29 31

Вот значение основных колонок в выводе утилиты:

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

Snimok ekrana ot 2020 06 21 20 30 25

Для просмотра списка процессов с потоками используйте опцию -L:

Snimok ekrana ot 2020 06 21 20 14 09

Здесь появятся ещё две дополнительных колонки:

Чтобы посмотреть список процессов определенного пользователя, например, sergiy используйте опцию -u:

Snimok ekrana ot 2020 06 21 20 14 34

Теперь давайте перейдём к другим, более интересным, интерактивным утилитам.

2. Утилита top

Утилита top не поставляется вместе с системой, поэтому вам придется её установить. Для этого в Ubuntu выполните:

sudo apt install top

Программа позволяет интерактивно просматривать список запущенных процессов Linux. Чтобы вывести список процессов Linux выполните команду:

Snimok ekrana ot 2020 06 21 20 14 59

Колонки, которые выводит программа очень похожи на ps:

Для того чтобы сделать вывод программы цветным, нажмите Z:

Snimok ekrana ot 2020 06 21 20 15 00

Чтобы вывести дерево процессов Linux нажмите сочетание клавиш Shift+V:

Snimok ekrana ot 2020 06 21 20 15 19

Для отображения потоков нажмите Shift + H:

Snimok ekrana ot 2020 06 21 20 16 01

Если вам недостаточно стандартных полей с информацией о процессах, вы можете нажать Shift + F и выбрать дополнительные поля, которые надо отображать. Для выбора или удаления поля используйте пробел:

Snimok ekrana ot 2020 06 21 20 16 05

3. Утилита htop

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

sudo apt install htop

Для того чтобы запустить выполните в терминале:

Snimok ekrana ot 2020 06 21 20 16 38

Колонки, которые вы увидите в выводе программы, аналогичны тем, что доступны в top, поэтому я не буду рассматривать их здесь отдельно. Для настройки выводимых данных нажмите кнопку F2, затем перейдите в раздел Display Options:

Snimok ekrana ot 2020 06 21 20 16 44

Snimok ekrana ot 2020 06 21 20 17 18

Для того чтобы настроить какие колонки будут отображаться используйте пункт меню Columns:

Snimok ekrana ot 2020 06 21 20 16 48

Тут вы можете выбрать какие колонки отображать, а какие нет, а также можете настроить их порядок.

4. Программа Gnome Monitor

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

Snimok ekrana ot 2020 06 21 20 18 21

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

Snimok ekrana ot 2020 06 21 20 18 46

Теперь программа отображает все запущенные процессы Linux в системе. Здесь вы можете выполнять поиск по процессам, завершать их и многое другое. Но потоков и дерева процессов программа не показывает.

5. Утилита atop

sudo apt install atop

Затем запустите её:

Snimok ekrana ot 2020 06 21 20 19 28

Вот основные колонки, которые выводит утилита и их значения:

Для того чтобы включить отображение потоков процесса нажмите y:

Snimok ekrana ot 2020 06 21 20 20 22

Для просмотра информации о памяти нажмите m, если хотите вернутся обратно, нажмите g:

Snimok ekrana ot 2020 06 21 20 19 46

Выводы

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

Источник

rytp барбоскины без мата VIDEOMEGA RU (Октябрь 2022).

Table of Contents:

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

Каждый раз, когда пользователь или система (Linux) запускает программу, ядро ​​создает процесс. Процесс хранит в памяти детали выполнения программы, такие как входные и выходные данные, переменные и так далее.

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

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

Файловая система / proc хранит информацию о текущих запущенных процессах в вашей системе и содержит каталоги для каждого процесса.

Используйте команду ls для вывода списка содержимого, однако список может быть длинным, поэтому используйте конвейер и утилиту less для просмотра содержимого / 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

Ниже приведен список файлов для процесса 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 с помощью верхней команды

Узнайте больше о том, как установить Glances в системах Linux.

Узнать номер процесса PID

Найти PID процесса Linux

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

Узнать имя процесса, используя номер PID

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

Найти имя процесса Linux

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

Источник

52d4fb4bdc76796cec7b72d2725212

Многопроцессорные операционные системы, такие как Linux и BSD, используют несколько методов для максимальной загрузки ЦП. Процесс — это просто исполняемая программа. Поскольку в любой момент времени в Linux запущено значительно больше одного процесса, управление ими чрезвычайно важно. Пользователи регулярно сталкиваются с такими проблемами, как ограничение ресурсов процессора при запуске слишком большого количества программ. Подобные ситуации возникают, когда процессор не справляется с растущим числом процессов. Хотя это не полностью зависит от мощности вашего процессора, работа с зависшими процессами или процессами зомби может быть довольно неприятной. Чтобы облегчить вам жизнь в таких случаях, мы описываем здесь некоторые стандартные способы уничтожения таких процессов.

Мастер управления неотзывчивыми процессами в Linux

Вы узнаете несколько способов как в Linux завершить процесс, который не подает признаков жизни. Если вы юзали Windows, скорее всего вам знаком шорткат Ctrl + Alt + Delete. Точно так же пользователи Mac имеют метод Command + Option + Escape для уничтожения замороженных процессов. Linux гораздо более универсален, чем его аналоги, и предлагает более одного метода для устранения мертвых процессов.

Различные методы убийства мертвого процесса Linux

В основном мы опишем два метода убийства зомби-процессов. Мы будем использовать терминал Linux для первого метода. Для этого сначала нужно идентифицировать id процесса, он же PID, от английского process identifier – идентификатор процесса. После успешного получения мы сможем использовать этот PID, посылая сигнал для уничтожения программы ориентируясь на номер-идентификатор.

Вы также узнаете, как обкашливать такие вопросики, используя графический интерфейс пользователя. Для этого мы собираемся использовать приложение «Системный монитор», доступное в Ubuntu. Хотя это приложение GNOME, аналогичные инструменты доступны и для других сред Linux.

Завершить неотвечающий процесс из командной строки

Существует несколько инструментов для завершения неотвечающего или зависшего процесса из командной строки, включая kill, pkill и killall. Эти команды работают, посылая определенные сигналы не отвечающим процессам. Вам понадобится PID, чтобы вы могли отправить им требуемый завершающий сигнал.

process management in

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

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

Узнайте информацию о PPID

Вы можете узнать PPID процесса, используя несколько команд управления процессами в Linux, таких как pidof, pstree и pgrep. Давайте рассмотрим их одну за другой и посмотрим, как получить PID процесса Linux.

Способ 1: использование команды ps

Команда ps в Linux отображает все запущенные процессы вместе с другой информацией о процессах, такой как PID, в терминале. Мы можем использовать эту команду для вывода списка всех процессов, а затем отфильтровать определенный процесс с помощью команды grep в Linux. Она должна показать нам номер идентификатора процесса, который нам и требуется.

Давайте подробнее поговорим о том, что происходит на демонстрации выше. Во-первых, мы запустили в фоновом режиме текстовый редактор Nano. Затем мы использовали команду ps вместе с командой grep, чтобы узнать PPID этого редактора. Вывод может содержать несколько идентификаторов процессов, но нас интересует только первый, поскольку это наш PPID. Мы также можем использовать команду Linux awk, чтобы узнать эту информацию, как показано ниже.

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

lis zombie ps

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

Команда pstree предоставляет нам древовидное представление всех запущенных процессов. Она предоставляет графическое представление списка задач Linux из окна терминала. С помощью этой команды вы можете просмотреть PPID или, при желании, информацию о всех PID процесса. Посмотрите приведенные ниже примеры, чтобы узнать, как использовать pstree для поиска PPID определенного процесса.

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

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

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

Мы породили nano-процесс аналогично предыдущим примерам. Затем мы получили его PPID с помощью команды pgrep. Как только мы получим это значение, мы сможем выполнить задачу уничтожения мертвого процесса максимально легко.

Способ 4: Использование команды pidof

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

pgrep pidof pstree

Способ 5: использование команды top

Команда top обеспечивает представление в реальном времени всех запущенных процессов в Unix-подобных операционных системах. Вы можете использовать её, чтобы отобразить список задач Linux в вашем терминале и узнать информацию о PID определенного процесса.

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

Поскольку top обеспечивает вывод в реальном времени вместо выгрузки статических данных на экран, мы использовали опцию -n1 и -b для получения статического вывода. Затем вы можете получить информацию о PPID с помощью команды grep или awk.

Убить не отвечающий процесс Linux

Способ 1: использование команды kill

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

Как видите, kill предлагает 64 различных сигнала. Однако в этом руководстве мы обсудим только два из них. Это сигнал 9 (SIGKILL) и сигнал 15 (SIGTERM). SIGTERM или сигнал 15 — это безопасный метод уничтожения не отвечающего процесса. SIGKILL или сигнал 9, с другой стороны, принудительно убивает процесс Linux.

Вышеприведенные команды эквивалентны, и они принудительно завершат процесс с PID 8631. Это PPID процесса «nano» в моей системе. Замените его на PID не отвечающего процесса в вашей системе.

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

kill after pgrep

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

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

Вы можете использовать любую из перечисленных выше команд pkill для уничтожения зомби-процесса в Linux. Также команда pkill позволяет вам отправлять определенные завершающие сигналы.

Способ 3: использование команды killall

Команда killall позволяет пользователям уничтожать неотвечающие процессы на основе их имен. Так значительно проще, но, при не осторожном использовании, может вызвать серьёзные проблемы. Так как killall завершает процессы, основанные на именах, всегда есть шанс, что вы в конечном итоге убьете процесс случайно. Например, если в вашей системе доступны разные версии nano, первая команда в демонстрации ниже уничтожит их все.

Способ 4: использование удобных однострочников

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

Теперь подробнее, в первом примере мы использовали интерполяцию оболочки для передачи PID процесса «nano» команде Linux kill. Второй пример использует несколько повседневных команд терминала и перенаправление ввода / вывода, чтобы завершить процесс. Вы сможете создавать свои собственные изящные однострочники, когда лучше освоитесь с терминалом Linux.

one liner

Способ 5: уничтожение нескольких процессов с помощью шелл-скриптов Linux

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

Теперь сохраните этот файл и добавьте разрешение на выполнение, введя команду ниже.

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

Просто замените аргументы именами не отвечающих процессов Linux в вашей системе.

process killer script

Завершить неотвечающий процесс из графического интерфейса

Вы также можете завершить неотвечающий процесс из GUI или window X. Мы обсудим два способа сделать это в следующем разделе.

Способ 1: использование приложения xkill

Современные дистрибутивы Linux используют оконную систему X window для предоставления конечному пользователю элегантного графического интерфейса. Существует простой инструмент под названием xkill, который позволяет юзерам закрывать неотвечающее окно графического интерфейса. Это возможно, поскольку в Linux окно заголовка приложения отделено от самого приложения.

Просто зайдите в эмулятор терминала Linux и введите xkill. Он превратит ваш курсор мыши в кнопку X, которую можно использовать для уничтожения любого окна GUI.

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

Способ 2. Использование приложения System Monitor в Ubuntu

Большинство основных дистрибутивов Linux поставляются с какими-то инструментами мониторинга графического интерфейса, которые позволяют пользователям «графически» завершать зависший процесс Linux. Например, приложение System Monitor в Ubuntu позволит нам интуитивно прекратить не отвечающий процесс. Вы можете просто выбрать мертвый процесс из списка процессов и уничтожить его, щелкнув правой кнопкой мыши по процессу и выбрав опцию уничтожения.

sys monitor

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

Послесловие

Источник

How to get a process name from his pid ?
For example I execute cat file1.txt, but I want to figure out that cat command and its arguments since its pid in the system. Is there a struct to determine it or something similar? Any idea?

asked Mar 21, 2013 at 10:47

TheForbidden's user avatar

TheForbiddenTheForbidden

1,5334 gold badges22 silver badges30 bronze badges

1

There is not any general way to do this unix.
Each OS has different ways to handle it and some are very hard. You mention Linux though. With Linux, the info is in the /proc filesystem.
To get the command line for process id 9999, read the file /proc/9999/cmdline.

answered Mar 21, 2013 at 10:56

Anubhab's user avatar

4

On linux, you can look in /proc/. Try typing man proc for more information. The contents of /proc/$PID/cmdline will give you the command line that process $PID was run with. There is also /proc/self for examining yourself 🙂

An alternative (e.g. on Mac OS X) is to use libproc. See libproc.h.

answered Mar 21, 2013 at 11:00

robbie_c's user avatar

robbie_crobbie_c

2,3881 gold badge18 silver badges28 bronze badges

2

POSIX C does NOT support give a standard API for getting the process name by PID.

In linux, you can get the name by LINUX Proc API: /proc/$PID/cmdline. And the code looks like these:

const char* get_process_name_by_pid(const int pid)
{
    char* name = (char*)calloc(1024,sizeof(char));
    if(name){
        sprintf(name, "/proc/%d/cmdline",pid);
        FILE* f = fopen(name,"r");
        if(f){
            size_t size;
            size = fread(name, sizeof(char), 1024, f);
            if(size>0){
                if('n'==name[size-1])
                    name[size-1]='';
            }
            fclose(f);
        }
    }
    return name;
}

answered Mar 6, 2014 at 3:32

QJGui's user avatar

QJGuiQJGui

9098 silver badges10 bronze badges

1

To get the process name of a process id say 9000 use this command:

ps -p 9000 -o comm=

answered Sep 8, 2014 at 6:00

Thunder's user avatar

ThunderThunder

2,9641 gold badge24 silver badges19 bronze badges

While this question has been answered, I’d like to add my 2 cents.

In my case, when process 1111 creates process 22222 via pipe (at least this is what I heard), /proc/2222/cmdline does not give correct process name, but instead gives something like 1111_1. I have to use /proc/2222/comm to get the correct process name.

hola's user avatar

hola

9181 gold badge17 silver badges35 bronze badges

answered Feb 17, 2016 at 15:13

toddwz's user avatar

toddwztoddwz

5114 silver badges8 bronze badges

Use the below command in Linux

ls -l /proc/[pid]/exe

It will give the name of the process/application name

Paul Roub's user avatar

Paul Roub

36.3k27 gold badges83 silver badges92 bronze badges

answered Apr 29, 2019 at 12:29

Vikram B's user avatar

Vikram BVikram B

1171 silver badge6 bronze badges

ps --pid <pid> -o comm h :
This command gives executable file name. For example if you run a script name.sh, then the above command gives output as bash

ps --ppid <pid> -o comm h:
This command gives the output as name

answered Dec 11, 2019 at 6:11

inihsrah's user avatar

Обновлено Обновлено: 29.03.2023
Опубликовано Опубликовано: 09.11.2017

Просмотр процессов
Остановка процессов
Подробная информация
Потребление ресурсов

Список процессов

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

ps

Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:

ps aux

Мы увидим, примерно, следующее:

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 — текущее состояние процесса. Могут принимать значения:
    1. R — выполнимый процесс;
    2. S — спящий;
    3. D — в состоянии подкачки на диске;
    4. T — остановлен;
    5. Z — зомби.
    6. W — не имеет резидентных страниц;
    7. < — высоко-приоритетный;
    8. N — низко-приоритетный;
    9. L — имеет страницы, заблокированные в памяти.
  • START — дата запуска процесса.
  • TIME — время запуска процесса.
  • COMMAND — команда, запустившая процесс.

Ключи

Ключ Описание
-A Все процессы.
-a Запущенные в текущем терминале, кроме главных системных.
-d Все, кроме главных системных процессов сеанса.
-e Все процессы.
f Показать дерево процессов с родителями.
T Все на конкретном терминале.
a Все, связанные с текущим терминалом и терминалами других пользователей.
r Список только работающих процессов.
x Отсоединённые от терминала.
u Показать пользователей, запустивших процесс.

Примеры

Поиск процесса с помощью grep:

ps aux | grep apache

Убить процесс

Останавливаем процесс по его PID:

kill <PID>

Если процесс не завершается, убиваем его принудительно:

kill -9 <PID>

Остановить все процессы с именем nginx:

killall nginx

Как и в случае с kill, можно это сделать принудительно:

killall -9 nginx

Можно остановить все процессы конкретного пользователя:

killall -u oleg

Ищем процесс по имени, извлекаем его PID и завершаем его:

kill `ps aux | grep ‘apache’ | awk ‘{print $2}’`

* обратите внимание, что запрос может вывести несколько процессов, которые будут попадать под критерии поиска — в таком случае, они будут завершены все.

Подробная информация о процессе

Для каждого процесса создается каталог по пути /proc/<PID>, в котором создаются папки и файлы с описанием процесса.

Примеры использования /proc/<PID>

Подробный вывод статуса:

cat /proc/<PID>/status

Адрес в ячейках оперативной памяти, которые занял процесс:

cat /proc/<PID>/syscall

Команда, которой был запущен процесс:

cat /proc/<PID>/cmdline

Символьная ссылка на рабочий каталог процесса:

ll /proc/<PID>/cwd

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

ll /proc/<PID>/exe

Увидеть ссылки на дескрипторы открытых файлов, которые затрагивает процесс:

ll /proc/<PID>/fd/

Подробное описание на сайте man7.org.

Потребление ресурсов процессами

Для просмотра статистики потребления ресурсов используем утилиту top:

top

Пример вывода:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
21059 root      20   0  157884   2280   1496 R  18,8  0,1   0:00.03 top
    1 root      20   0  190996   2964   1652 S   0,0  0,1   6:49.99 systemd
    2 root      20   0       0      0      0 S   0,0  0,0   0:01.78 kthreadd
    3 root      20   0       0      0      0 S   0,0  0,0   0:24.75 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0,0  0,0   0:00.00 kworker/0:0H

* где:

  • PID — идентификатор процесса.
  • USER — имя учетной записи, от которой запущен процесс.
  • PR — приоритет процесса.
  • NI — приоритет, выставленной командой nice.
  • VIRT — объем виртуальной памяти, потребляемый процессом.
  • RES — объем используемой оперативной памяти.
  • SHR — количество разделяемой памяти, которое используется процессом.
  • S — состояние процесса.
  • %CPU — процент использования процессорного времени.
  • %MEM — потребление оперативной памяти в процентах.
  • TIME — использование процессорного времени в секундах.
  • COMMAND — команда, которая запустила процесс.

Дмитрий Моск — частный мастер

Была ли полезна вам эта инструкция?

Да            Нет

May 28, 2019

Query the name of the running process, usually requires the linux ps command, linux netstat command, linux awk command and the linux grep command.

grep process by name

➜ ps -ef | grep nginx

grep process by port

➜  grep netstat -an | grep "*.8080"

grep process id and kill

➜ ps -ef | grep "tail"  | grep -v grep | awk -F" " 'system("kill  "$2"")'

Command interpretation:

step 1. Show the process you want to kill and exclude the grep command.

➜ ps -ef | grep "tail"  | grep -v grep

step 2. Get the process pid you want to kill.

➜  grep ps -ef | grep "tail -f"  | grep -v grep | awk -F" " '{print $2}'

step 3. Kill the process with awk system.

➜ ps -ef | grep "tail"  | grep -v grep | awk -F" " 'system("kill  "$2"")'

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