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

In order to search for a process you can use ps with grep.

For example to search for firefox

ps aux | grep firefox

How to get the same answer without using grep?

muru's user avatar

muru

191k52 gold badges467 silver badges718 bronze badges

asked Apr 22, 2015 at 5:40

Maythux's user avatar

2

The pgrep command, and its sibling pkill, exists precisely for this purpose:

  • pgrep firefox will list all processes whose commands match firefox
  • pgrep -f firefox will list all processes whose entire command lines match firefox
  • pgrep -x firefox will list all processes whose commands exactly match firefox
  • … and so on.

And naturally, pgrep will exclude itself from the match, so none of the grep rituals associated with ps | grep are needed.


The other set of tools for this are the pidof and killall commands. These aren’t as flexible as pgrep and pkill.

  • pidof firefox will list processes whose command is firefox

answered Apr 22, 2015 at 5:56

muru's user avatar

murumuru

191k52 gold badges467 silver badges718 bronze badges

1

ps -fC process-name

example:

ps -fC firefox

from man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

answered Apr 22, 2015 at 5:46

Maythux's user avatar

MaythuxMaythux

82.2k54 gold badges237 silver badges269 bronze badges

1

top allows you to search for string when you hit uppercase L; the process will be highlighted, and use up and down arrow keys to scroll through list of processes. Similarly,
htop command allows highlighting a particular process when you hit /. And will filter all the processes with a particular string in the name.

For those who like awk, here’s an awk oneliner: ps -eF | awk '/process-name/ {print $11}'
. With ps -eF process name is always in 11th column. Alternatively if you do ps -eF | awk '{print $11}' | sort you get a sorted list of processes names, sorted alphabetically. Pipe it into less command just to view the long list of files easier.

answered Apr 22, 2015 at 6:38

Sergiy Kolodyazhnyy's user avatar

A cool trick

$ps -ejH

You will get all the processes with names

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Redirect or so copy the output to a file and then open nano,
press Ctrl+W
and you can search for the name you want.

Zanna's user avatar

Zanna

68.8k55 gold badges214 silver badges325 bronze badges

answered Jan 3, 2017 at 6:45

daniel's user avatar

You can also use htop and then hit F4 to filter the results with a matching user-defined string. You also have a custom search feature available by hitting F3.

answered Apr 22, 2015 at 9:36

JoErNanO's user avatar

JoErNanOJoErNanO

1211 silver badge6 bronze badges

If two processes is the problem, you can use only grep:

grep firefox /proc/*/cmdline

answered Aug 11, 2016 at 11:18

user1497298's user avatar

If the reason you don’t want to use ps | grep is because it loses the first line (the column headers), you can do:

ps aux | grep 'firefox|^USER'

This is grepping for a line that contains firefox or a line that starts with USER (the first line of header line on my distro).

answered Aug 17, 2022 at 13:47

Kip's user avatar

I just read this ps alias on the Lennart Poettering Blog. The output is according to the systemd control group parenting:

alias psc='ps xawf -eo pid,user,cgroup,args'

wjandrea's user avatar

wjandrea

14k4 gold badges46 silver badges97 bronze badges

answered Sep 9, 2018 at 0:21

DDPenga's user avatar

Как вы думаете, операционная система Linux может автоматически позаботиться сама о себе? Когда работает все нормально или вам не нужны никакие нестандартные возможности – вполне да. Но иногда может понадобиться ваше вмешательство в ее работу.

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

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

  • Просмотр запущенных процессов
  • Просмотр информации о процессах
  • Поиск процессов в Linux
  • Изменение приоритета процессов
  • Завершение процессов
  • Ограничение памяти доступной процессу

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

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

Начнем с того, что разберемся в терминах. По сути, процесс – это каждая программа. Как я уже говорил для каждой запускаемой программы создается отдельный процесс. В рамках процесса программе выделяется процессорное время, оперативная память и другие системные ресурсы. У каждого процесса есть свой идентификатор, Proccess ID или просто PID, по ним, чаще всего и определяются процессы Linux. PID определяется неслучайно, как я уже говорил, программа инициализации получает PID 1, а каждая следующая запущенная программа – на единицу больше. Таким образом PID пользовательских программ доходит уже до нескольких тысяч.

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

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

cat /proc/1/cmdline

/usr/lib/systemd/systemd

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

В Linux есть очень большое количество утилит для решения различных задач по управлению процессами. Это и такие многофункциональные решения, как htop, top, а также простые утилиты, например, ps, kill, killall, who и т д. Я не буду рассматривать в этой статье графические утилиты, и top тоже рассматривать не буду. Первое потому что слишком просто, второе – потому что htop лучше. Мы остановимся на работе с программой htop и ее аналогами в форме утилит в стиле GNU, одна утилита – одна функция.

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

sudo apt install htop

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

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

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

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

htop

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

  • PID – идентификатор процесса
  • USER – пользователь, от которого был запущен процесс
  • PRI – приоритет процесса linux на уровне ядра (обычно NI+20)
  • NI – приоритет выполнения процесса от -20 до 19
  • S – состояние процесса
  • CPU – используемые ресурсы процессора
  • MEM – использованная память
  • TIME – время работы процесса

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

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

htop2

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

htop3

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

ps

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

  • -e – вывести информацию обо всех процессах
  • -a – вывести информацию обо всех наиболее часто запрашиваемых процессах
  • -t – показывать только процессы из этого терминала
  • -p – показывать информацию только об указанном процессе
  • -u – показывать процессы только определенного пользователя

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

ps aux

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

ps aux --sort=%mem

Список будет отсортирован в обратном порядке, внизу значения больше, вверху – меньше. Если нужно в обратном порядке, добавьте минус:

ps aux --sort=-%cpu

ps1

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

ps aux | tail

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

pstree

pstree

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

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

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

htop4

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

htop6

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

ps aux | grep chromium

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

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

Приоритет процесса linux означает, насколько больше процессорного времени будет отдано этому процессу по сравнению с другими. Так мы можем очень тонко настроить какая программа будет работать быстрее, а какая медленнее. Значение приоритета может колебаться от 19 (минимальный приоритет) до -20 – максимальный приоритет процесса linux. Причем, уменьшать приоритет можно с правами обычного пользователя, но чтобы его увеличить нужны права суперпользователя.

В htop для управления приоритетом используется параметр Nice. Напомню, что Priv, это всего лишь поправка, она в большинстве случаев больше за Nice на 20. Чтобы изменить приоритет процесса просто установите на него курсор и нажимайте F7 для уменьшения числа (увеличения приоритета) или F8 – для увеличения числа.

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

nice -n 10 apt-get upgrade

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

renice -n 10 -p 1343

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

Если процесс завис и не отвечает, его необходимо завершить. В htop, чтобы убить процесс Linux, просто установите курсор на процесс и нажмите F9:

htop7

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

  • SIGTERM – попросить процесс сохранить данные и завершится
  • SIGKILL – завершить процесс немедленно, без сохранения

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

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

kill -TERM 1943

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

killall chromium

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

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

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

<домен> <тип> <элемент> <значение>

  • домен – имя пользователя, группы или UID
  • тип – вид ограничений – soft или hard
  • элемент – ресурс который будет ограничен
  • значение – необходимый предел

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

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

  • nofile – максимальное количество открытых файлов
  • as – максимальное количество оперативной памяти
  • stack – максимальный размер стека
  • cpu – максимальное процессорное время
  • nproc – максимальное количество ядер процессора
  • locks – количество заблокированных файлов
  • nice – максимальный приоритет процесса

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

sergiy hard nproc 20

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

cat /proc/PID/limits

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.

Вот опции команды:

  • -S – мягкое ограничение
  • -H – жесткое ограничение
  • -a – вывести всю информацию
  • -f – максимальный размер создаваемых файлов
  • -n – максимальное количество открытых файлов
  • -s – максимальный размер стека
  • -t – максимальное количество процессорного времени
  • -u – максимальное количество запущенных процессов
  • -v – максимальный объем виртуальной памяти

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

ulimit -Sn 1024

Теперь смотрим:

ulimit -Sn

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

ulimit -Sv 500000

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

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

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

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

При написании этой статьи я использовал Ubuntu. Однако команды могут работать в любом дистрибутиве Linux.

Содержание

  1. Определение местоположения процесса Linux
  2. Завершение процесса по идентификатору
  3. Как проверить, был ли процесс завершен или нет?
  4. Завершение процесса по имени
  5. Заключение

Определение местоположения процесса Linux

Шаг 1: Прежде всего, откройте Terminal, нажав на пусковую установку Ubuntu и выполнив поиск Terminal.

Открытие терминала

Шаг 2: Теперь нажмите на Терминал и подождите, пока он откроется.

Шаг 3: Как только терминал откроется, у вас появится вот такой экран:

Командная строка терминала

В последующих шагах важны следующие два ключа:

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

Шаг 4: команда top- используется в качестве основной команды для просмотра всех запущенных процессов, использующих ресурсы компьютерного устройства. Итак, мы выполняем команду top- в терминале и получаем следующие результаты

Использование команды Linux top для поиска процесса

Команда top сама по себе является приложением. Оно может использоваться для отображения списка всех процессов и имеет новое оформление при выполнении. Вот пример,

  • h – используется для отображения окна справки. В окне справки есть все команды, они предоставляют информацию, которая весьма полезна.
  • пробел – При нажатии пробела мы получим немедленное обновление таблицы процессов. Нам не придется ждать никакого временного интервала.
  • f – добавление файлов для отображения в макете или удаление для удаления определенных полей, чтобы они не отображались.
  • q – используется для выхода из верхнего приложения, а также для дополнительно открытого окна.
  • l – используется для переключения отображения информации о средней нагрузке и времени работы.
  • m – служит для переключения отображения информации о памяти.
  • P (Shift + p) – используется для сортировки процессов по использованию процессора.s – используется для изменения задержки между обновлениями.

Шаг 5: Для просмотра списка всех запущенных процессов есть еще одна команда

Команда ps в Linux

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

Когда вы закончите, нажмите “q”, чтобы выйти из этого окна.

Завершение процесса по идентификатору

Получив PID, мы можем использовать команду kill, чтобы завершить процесс на основе информации, полученной от команды ps -A.

Шаг 1: Для этого мы используем команду “sudo kill PID”. Где PID – это идентификатор процесса, который мы хотим завершить.

Если мы хотим завершить определенный процесс, мы видим его соответствующий PID, а затем используем его, чтобы завершить запущенный процесс. Например, мы хотим завершить процесс “firefox”, поэтому сначала находим его PID.

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

Итак, здесь PID firefox равен 16562. Мы используем команду “sudo kill PID”, чтобы завершить процесс Firefox.

Как проверить, был ли процесс завершен или нет?

Затем мы проверяем все запущенные процессы после того, как убьем интересующий нас процесс, используя команду “ps -A | less”. Результат показывает, что в списке нет процесса firefox (PID: 16562).

Проверьте, был ли процесс убит

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

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

Сейчас мы убьем интересующий нас процесс, используя его имя. Если мы хотим завершить конкретный процесс, мы видим его соответствующий PID и затем используем его для убийства запущенного процесса. Например, мы хотим завершить процесс “firefox”, поэтому сначала находим его PID. Завершить процесс Linux по имени

Итак, здесь имя процесса – firefox, и мы используем команду “pkill firefox” для завершения этого процесса.

Затем мы проверим все запущенные процессы после того, как убьем интересующий нас процесс, используя команду “ps -A | less”. Результат показывает, что в списке нет процесса firefox.

Заключение

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

Содержание

  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

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

Послесловие

Источник

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