Работа с процессами в 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
Источник
Команда ps в Linux
Утилита ps одна из самых простых и в то же время часто используемых программ для просмотра списка процессов в Linux. Она не поддерживает интерактивный режим, зато имеет множество опций для настройки вывода тех или иных параметров процессов в Linux.
В этой статье мы рассмотрим как пользоваться ps, что с помощью неё можно посмотреть, а также какие основные опции можно использовать.
Что такое процесс?
Чтобы понять что отображает команда ps сначала надо разобратся что такое процесс. Процесс Linux — это экземпляр программы, запущенный в памяти. Все процессы можно разделить на обычные и фоновые. Более подробно об этом написано в статье управление процессами Linux. Linux — это многопользовательская система, каждый пользователь может запускать одни и те же программы, и даже один пользователь может захотеть запустить несколько экземпляров одной программы, поэтому ядру нужно как-то идентифицировать такие однотипные процессы. Для этого каждому процессу присваивается PID (Proccess Identificator).
Каждый из процессов может находиться в одном из таких состояний:
- Запуск — процесс либо уже работает, либо готов к работе и ждет, когда ему будет дано процессорное время;
- Ожидание — процессы в этом состоянии ожидают какого-либо события или освобождения системного ресурса. Ядро делит такие процессы на два типа — те, которые ожидают освобождения аппаратных средств и приостановление с помощью сигнала;
- Остановлено — обычно, в этом состоянии находятся процессы, которые были остановлены с помощью сигнала;
- Зомби — это мертвые процессы, они были остановлены и больше не выполняются, но для них есть запись в таблице процессов, возможно, из-за того, что у процесса остались дочерние процессы.
А теперь давайте перейдем ближе к практике.
Команда ps в Linux
Сначала рассмотрим общий синтаксис команды, здесь все очень просто:
$ ps опции
$ ps опции | grep параметр
Во втором варианте мы используем утилиту grep для того, чтобы отобрать нужные нам процессы по определенному критерию. Теперь рассмотрим опции утилиты. Они делятся на два типа — те, которые идут с дефисом Unix и те, которые используются без дефиса — BSD. Лучше пользоваться только опциями Unix, но мы рассмотрим и одни и другие. Заметьте, что при использовании опций BSD, вывод утилиты будет организован в BSD стиле.
- -A, -e, (a) — выбрать все процессы;
- -a — выбрать все процессы, кроме фоновых;
- -d, (g) — выбрать все процессы, даже фоновые, кроме процессов сессий;
- -N — выбрать все процессы кроме указанных;
- -С — выбирать процессы по имени команды;
- -G — выбрать процессы по ID группы;
- -p, (p) — выбрать процессы PID;
- —ppid — выбрать процессы по PID родительского процесса;
- -s — выбрать процессы по ID сессии;
- -t, (t) — выбрать процессы по tty;
- -u, (U) — выбрать процессы пользователя.
- -с — отображать информацию планировщика;
- -f — вывести максимум доступных данных, например, количество потоков;
- -F — аналогично -f, только выводит ещё больше данных;
- -l — длинный формат вывода;
- -j, (j) — вывести процессы в стиле Jobs, минимум информации;
- -M, (Z) — добавить информацию о безопасности;
- -o, (o) — позволяет определить свой формат вывода;
- —sort, (k) — выполнять сортировку по указанной колонке;
- -L, (H)— отображать потоки процессов в колонках LWP и NLWP;
- -m, (m) — вывести потоки после процесса;
- -V, (V) — вывести информацию о версии;
- -H — отображать дерево процессов;
Теперь, когда вы знаете синтаксис и опции, можно перейти ближе к практике. Чтобы просто посмотреть процессы в текущей оболочке используется такая команда терминала ps:
Все процессы, кроме лидеров групп, в том же режиме отображения:
Все процессы, включая фоновые и лидеры групп:
Чтобы вывести больше информации о процессах используйте опцию -f:
При использовании опции -f команда выдает такие колонки:
- UID — пользователь, от имени которого запущен процесс;
- PID — идентификатор процесса;
- PPID — идентификатор родительского процесса;
- C — процент времени CPU, используемого процессом;
- STIME — время запуска процесса;
- TTY — терминал, из которого запущен процесс;
- TIME — общее время процессора, затраченное на выполнение процессора;
- CMD — команда запуска процессора;
- LWP — показывает потоки процессора;
- PRI — приоритет процесса.
Например, также можно вывести подробную информацию обо всех процессах:
Больше информации можно получить, использовав опцию -F:
Эта опция добавляет такие колонки:
- SZ — это размер процесса в памяти;
- RSS — реальный размер процесса в памяти;
- PSR — ядро процессора, на котором выполняется процесс.
Если вы хотите получить еще больше информации, используйте вместо -f опцию -l:
Эта опция добавляет отображение таких колонок:
- F — флаги, ассоциированные с этим процессом;
- S — состояние процесса;
- PRI — приоритет процесса в планировщике ядра Linux;
- NI — рекомендованный приоритет процесса, можно менять;
- ADDR — адрес процесса в памяти;
- WCHAN — название функции ядра, из-за которой процесс находится в режиме ожидания.
Дальше мы можем отобрать все процессы, запущенные от имени определенного пользователя:
С помощью опции -H можно отобразить дерево процессов:
Если вас интересует информация только об определенном процессе, то вы можете использовать опцию -p и указать PID процесса:
Через запятую можно указать несколько PID:
Опция -С позволяет фильтровать процессы по имени, например, выберем только процессы chrome:
Дальше можно использовать опцию -L чтобы отобразить информацию о процессах:
Очень интересно то, с помощью опции -o можно настроить форматирование вывода, например, вы можете вывести только pid процесса и команду:
Вы можете выбрать такие колонки для отображения: pcpu, pmem, args, comm, cputime, pid, gid, lwp, rss, start, user, vsize, priority. Для удобства просмотра можно отсортировать вывод программы по нужной колонке, например, просмотр процессов, которые используют больше всего памяти:
Или по проценту загрузки cpu:
ps -FA —sort pcpu
Ещё одна опция — -M, которая позволяет вывести информацию про права безопасности и флаги SELinux для процессов:
Общее количество запущенных процессов Linux можно узнать командой:
Мы рассмотрели все основные возможности утилиты ps. Дальше вы можете поэкспериментировать с её параметрами и опциями чтобы найти нужные комбинации, также можно попытаться применить опции BSD.
Выводы
Команда ps Linux может быть очень полезной если система перегружена и вам необходимо срочно узнать запущенные процессы linux чтобы освободить память или ресурсы процессора. Интерактивные средства не всегда могут помочь, потому что они потребляют слишком много ресурсов. С другой стороны ps дает большую гибкость поскольку утилита имеет множество опций и параметров. Во всяком случае теперь вы знаете как вывести список процессов. Если остались вопросы, спрашивайте в комментариях!
Источник
Как Узнать Список Процессов 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. Также вы познакомились с командами позволяющими управлять данными процессами. С данными командами существует множество комбинаций, поэтому не бойтесь экспериментировать.
Источник