- Работа с процессами в Linux
- Список процессов
- Как узнать PID процесса в Linux
- Как узнать pid процесса Linux
- 2. pgrep
- 3. pidof
- 4. pstree
- Как узнать PID скрипта
- Каким процессом занят файл Linux
- Кто использовал файл в Linux
- Какой процесс использует порт в Linux
- Выводы
- Как Узнать Список Процессов Linux с Помощью Командной Строки
- Введение
- Что вам понадобится
- Шаг 1 — Просмотр списка процессов Linux
- Шаг 2 — Закрытие и расстановка приоритета процессов
- Заключение
Работа с процессами в 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 по различным условиям: имени или файлу. Как видите, всё достаточно просто, и в считанные минуты можно можно понять, что происходит с вашей операционной системой, и какой процесс за это отвечает.
Источник
Как Узнать Список Процессов Linux с Помощью Командной Строки
Введение
Процесс — это системный термин, который используется для описания приложения или программы. К примеру, когда мы открываем веб-браузер Google Chrome, мы можем сказать, что это процесс ответственный за запуск/выполнение Chrome, который был запущен и выполняется до тех пор пока мы не закроем браузер. Даже когда мы выполняем любую bash команду, появляется новый процесс. Если мы откроем одно и тоже приложение дважды, появится два процесса. В этом руководстве вы узнаете, как узнать список процессов Linux с помощью командной строки. Это необходимо, если вы хотите узнать какие процессы запущены в данный момент, каким пользователем запущен процесс или просто узнать какой из процессов использует больше всего ресурсов сервера.
Что вам понадобится
Перед тем, как вы начнете это руководство, вам понадобится следующее:
- Доступ к командной строке
Шаг 1 — Просмотр списка процессов Linux
Список терминов которые вам необходимо знать перед прочтением руководства:
- PID — идентификатор процесса. Каждый процесс имеет свой 5 значный код. Эти числа могут закончиться и начать повторяться, но в любое другое время у каждого процесса свой уникальный PID.
- PPID — родительский идентификатор процесса. Идентификатор процесса который запустил этот конкретный процесс.
Две самые часто используемые команды для показа списка процессов Linux это top и ps. Разница между ними заключается в том, что top чаще используется в интерактивном режиме, а ps больше используется в скриптах, в сочетании с другими bash командами.
top — возможно одна из самых базовых и часто используемых команд для отображения процесса, который потребляет наибольшее количество ресурсов сервера. После выполнения данной команды, вы должны увидеть похожее окно:
top само по себе является приложением, после выполнения команды появится новая таблица с постоянно обновляющимся списком процессов Linux. С данной таблицей можно взаимодействовать посредством клавиатуры. Вот несколько примеров:
- h или ? — отобразить окно помощи со всеми командами и другой полезной информацией.
- space — нажатие пробела на вашей клавиатуре вручную обновит таблицу процессов.
- f — добавить поле для отображения в новом окне или удалить определенные поля в таблице.
- q — выйти из приложения или дополнительных окон принадлежащих к нему. К примеру, после использования функции f.
- l — включить отображение информации о средней загрузке и времени работы.
- m — включить отображение информации о памяти.
- P (Shift + p) — отсортировать процессы по количеству используемой памяти.
- s — изменить задержку между обновлениями списка (вам будет предложено ввести значение в секундах).
Вы также можете использовать определенные опции с командой top:
- -d delay — укажите задержку между обновлениями вместо delay.
- -n number — обновить страницу определенное число раз и выйти из приложения. Вместо number введите значение.
- -p pid — отображать и контролировать процессы только с определенным (pid).
- -q — обновлять без какой-либо задержки.
Для получения информации о других полезных командах для клавиатуры, посетите данный сайт.
Также, вы можете использовать команду man top для просмотра полезной информации об этих командах.
Другие полезные применения команды top:
- Для отображения процессов определенного пользователя, вы можете использовать это: top -u user
- Для закрытия процесса, нажмите в окне приложения top клавишу k на клавиатуре. Далее, вам будет предложено вписать идентификатор процесса (pid), который вы хотите закрыть.
- Вы можете сохранить текущие настройки команды top используя сочетание клавиш Shift + W. Эти настройки будут сохранены в директории /root/.toprc
ps — Еще одна полезная команда для отображения списка процессов Linux. Вот несколько опций часто используемых с этой командой:
- -e — отображение всех процессов.
- -f — полное форматирование списка.
- -r — отображение запущенных процессов.
- -u — опция для показа процессов определенного пользователя или пользователей.
- —pid — опция для фильтрации процессов по PID.
- —ppid — опция для фильтрации процессов по родительскому PID.
- -C — фильтровать процессы по их имени или команде.
- -o — отображение информации, связанной с пробелом или списком ключевых слов, разделенных запятыми.
Вот несколько полезных примеров того, как вы можете использовать команду ps:
- ps -ef — отобразит список процессов, которые запущены прямо сейчас (еще одна похожая команда ps aux)
- ps -f -u user1,user2 — отобразит все процессы основанные на предоставленном UID (ID пользователя или имени пользователя).
- ps -f —pid id — отобразит процессы основанные на pid. Введите идентификатор процесса вместо id. Может быть использована вместе с PPID.
- ps -C command/name — фильтрация процессов по их имени или команде.
- ps aux —sort=-pcpu,+pmem — отобразит процессы потребляющие большое количество ресурсов ЦПУ.
- ps -e -o pid,uname,pcpu,pmem,comm — используется для фильтрации определенных столбцов с последующим их отображением.
- ps -e -o pid,comm,etime — эта команда отобразит время прошедшее с запуска процесса.
Мы рекомендуем посетить эту страницу для получения более подробной информации об использовании команды ps.
Шаг 2 — Закрытие и расстановка приоритета процессов
В предыдущем шаге мы уже рассказывали о том, как можно закрыть процесс с помощью команды top. Этот же результат может быть достигнут при помощи команды kill. К примеру:
kill pid — впишите вместо PID идентификатор процесса, который вы хотите закрыть. Если процесс довольно упрямый и не хочет быть закрыт, вы можете использовать команду: kill -9 pid.
Еще одной командой для управления процессами является NICE. Обычно она используется для расстановки приоритетов для процессов, когда на вашей системе их запущено действительно много. В этом случае ваша система узнает какие из процессов являются важными и установит для них более высокий приоритет. Проще говоря, она помогает вам расставить приоритеты процессов от более важных к менее важным. Система будет запускать процесс, который имеет меньший приоритет только в том случае, если для этого имеется достаточно ресурсов ЦПУ. Этой команде можно задать значение от -20 до 19, чем меньше значение, тем выше приоритет процесса. Стандартный приоритет для всех приложений 0. Основным синтаксисом будет:
- nice -n ‘значение’ process name — Пример: nice -n 10 name. Это начнет новый процесс с выбранным приоритетом (10).
- Если вы хотите задать значение приоритета для уже запущенного приложения используйте: renice ‘значение’ -p ‘PID’ — Пример: renice ’10’ -p ‘54125’.
Заключение
В этом руководстве вы научились, как узнать список процессов Linux. Также вы познакомились с командами позволяющими управлять данными процессами. С данными командами существует множество комбинаций, поэтому не бойтесь экспериментировать.
Источник