Список запущенных процессов linux. Управляем процессами в Ubuntu
В этом отрывке рассмотрены команды управления процессами. Вы научитесь замораживать процессы, размораживать, отправлять в фоновый режим, изменять приоритет, просматривать запущенные процессы и жестоко их убивать. Введено понятие сигналов. Рассмотрены такие команды, как bg, fg, jobs, kill, nohup, nice, renice, ps и top.
Об авторах
Daniel Robbins
Дэниэль Роббинс - основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo , написал множество технических статей для IBM developerWorks , Intel Developer Services и C/C++ Users Journal.
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure .
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее - платформа HP ePrint . В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
В Linux также имеются команды для управления процессами, например kill, pkill, pgrep и killall. Ниже приведено несколько примеров их использования:
$ pgrep -u tecmint top $ kill 2308 $ pgrep -u tecmint top $ pgrep -u tecmint glances $ pkill glancesми $ pgrep -u tecmint glances
Если вы хотите подробно изучить использование этих команд, информация по ссылкам ниже.
Обратите внимание, что с их помощью вы можете завршать зависшие приложения, которые тормозят вашу систему.
Отправка сигналов процессу
Фундаментальный способ управления процессами в Linux - это отправка им сигналов, которых имеется достаточно много. Посмотреть список всех сигналов можно с помощью команды:
$ kill -l
Для отправки сигналов процессу используются описанные выше команды kill, pkill или pgrep. Однако программа ответит на сигнал, только если она запрограммирована распознавать такой сигнал.
Большинство сигналов предназначены для использования системой или программистами при написании кода. Следующие сигналы могут быть полезны пользователю:
SIGHUP 1 – отправляется процессу при закрытии контролирующего его терминала.
SIGINT 2 – отправляется процессу контролирующим его терминалом, если пользователь прерывает работу процесса клавишами .
SIGQUIT 3 – отправляется процессу, если пользователь посылает сигнал выхода из программы .
SIGKILL 9 – этот сигнал немедленно завершает (убивает) процесс без выполнения любых операций очистки файлов, логов и т.д.
SIGTERM 15 – это сигнал завершения работы программы (он по умоланию отправляется командой kill).
SIGTSTP 20 – отправляется процессу контролирующим его терминалом с запросом на остановку (terminal stop); инициируется при нажатии .
Ниже приведены примеры использования команд kill для завершения работы Firefox при его зависании с использованием PID:
$ pidof firefox $ kill 9 2687 OR $ kill -KILL 2687 OR $ kill -SIGKILL 2687
Для завершения программы с использованием ее названия используются команды pkill или killall:
$ pkill firefox $ killall firefox
Изменение приоритета процесса
В Linux все активные процессы имеют определенное значение приоритета (nice). Процессы с более высоким приоритетом обычно получают больше процессорного времени, чем процессы с более низким приоритетом.
Однако пользователь с привилегиями root может менять приоритет с помощью команд nice и renice.
В выводе команды top столбец NI отображает значения nice для процессов.
Вы можете использовать команду nice, чтобы задать значение nice процесса. Не забывайте, что обычный пользователь может присвоить процессу значение nice от 0 до 20, только если это процесс ему принадлежит.
Отрицательные значения nice может использовать только пользователь root.
Для понижения приоритета процесса используется команда renice:
$ renice +8 2687 $ renice +8 2103
Иногда у пользователя появляется надобность отследить список запущенных процессов в операционной системе Linux и узнать максимально детальную информацию о каждом из них или о каком-то конкретно. В ОС присутствуют встроенные средства, позволяющие осуществить поставленную задачу без каких-либо усилий. Каждый такой инструмент ориентирован под своего юзера и открывает для него разные возможности. В рамках этой статьи мы затронем два варианта, которые будут полезны в определенных ситуациях, а вам останется только выбрать наиболее подходящий.
Практически во всех популярных дистрибутивах, основанных на ядре Linux, список процессов открывается и просматривается с помощью одних и тех же команд, инструментов. Поэтому мы не будем сосредотачивать внимание на отдельных сборках, а возьмем за пример последнюю версию Ubuntu. Вам же останется только выполнить предоставленные инструкции, чтобы вся процедура прошла успешно и без трудностей.
Способ 1: Терминал
Бесспорно, классическая консоль операционных систем на Линуксе играет важнейшую роль при взаимодействии с программами, файлами и другими объектами. Все основные манипуляции юзер производит именно через это приложение. Потому с самого начала хотелось бы рассказать о выводе информации именно через «Терминал» . Обратим внимание мы лишь на одну команду, однако рассмотрим самые популярные и полезные аргументы.
- Для начала запустите консоль, нажав на соответствующий значок в меню или используя комбинацию клавиш Ctrl + Alt + T .
- Пропишите команду ps , чтобы просто убедиться в ее работоспособности и ознакомиться с видом показанных данных без применения аргументов.
- Как видите, список процессов получился достаточно малым, обычно это не более трех результатов, поэтому стоит уделить время уже упомянутым аргументам.
- Чтобы отобразились сразу все процессы, стоит добавить -A . В таком случае команда выглядит как ps -A (A обязательно должна быть в верхнем регистре). После нажатия на клавишу Enter вы сразу увидите сводку строк.
- Предыдущая команда не отображает лидера группы (главный процесс из связки). Если вас интересуют и эти данные, здесь следует прописать ps -d .
- Получить большее количество полезной информации можно, просто добавив -f .
- Тогда полный список процессов с расширенной информацией будет вызываться через ps -Af . В таблице вы увидите UID — имя пользователя, запустившего процесс, PID — уникальный номер, PPID — номер родительского процесса, C — количество времени нагрузки на ЦП в процентах, когда активен процесс, STIME — время активации, TTY — номер консоли, откуда был совершен запуск, TIME — время работы, CMD — команда, запустившая процесс.
- Каждый процесс имеет свой PID (Proccess Identificator). Если вы хотите увидеть сводку о конкретном объекте, пропишите ps -fp PID , где PID — номер процесса.
- Отдельно хотелось бы затронуть и сортировку. Например, команда ps -FA --sort pcpu позволяет поставить все строки в порядке нагрузки на CPU, а ps -Fe --sort rss — по затрачиваемому объему оперативной памяти.
Выше мы рассказали об основных аргументах команды ps , однако присутствуют еще и другие параметры, например:
- -H — отображение дерева процессов;
- -V — вывод версий объектов;
- -N — выборка всех процессов кроме заданных;
- -С — отображение только по имени команды.
Для рассмотрения метода просмотра процессов через встроенную консоль мы выбрали именно команду ps , а не top , поскольку вторая ограничена размерами окна и не помещающиеся данные просто игнорируются, оставаясь невыведенными.
Способ 2: Системный монитор
Конечно, метод просмотра нужной информации через консоль является сложным для некоторых пользователей, но он позволяет подробно ознакомиться со всеми важными параметрами и применить необходимые фильтры. Если вы хотите просто просмотреть список запущенных утилит, приложений, а также совершить с ними ряд взаимодействий, вам подойдет встроенное графическое решение «Системный монитор» .
Способы запуска этого приложения вы можете узнать в другой нашей статье, перейдя по следующей ссылке, а мы же переходим к выполнению поставленной задачи.
- Запустите «Системный монитор» любым удобным методом, например, через меню.
- Сразу же отобразится список процессов. Вы узнаете, сколько они потребляют памяти и ресурсов ЦП, увидите пользователя, запустившего выполнение программы, а также сможете ознакомиться с другой информацией.
- Щелкните правой кнопкой мыши на интересующей строке, чтобы перейти в ее свойства.
- Здесь отображаются практически все те же данные, которые доступны к получению через «Терминал» .
- Используйте функцию поиска или сортировки, чтобы найти необходимый процесс.
- Обратите внимание и на панель сверху — она позволяет сортировать таблицу по необходимым значениям.
Завершение, остановка или удаление процессов также происходит через это графическое приложение путем нажатия на соответствующие кнопки. Начинающим пользователям такое решение покажется более удобным, чем работа в «Терминале» , однако освоение консоли позволит получать искомую информацию не только быстрее, но и с большим количеством деталей.
Подход к управлению процессами в ОС Linux не так очевиден. Все процессы обладают ограниченными правами и могут влиять только на ограниченные участки системы, что исключает возможность перегрузки процессора при некорректной работе процесса, а знание команд управления процессами позволит быстро справиться с проблемным процессом и стабилизировать работу ОС.
Команды управления процессами
Чтобы увидеть список запущенных процессов, нужно ввести команду
Ps-A
В результате выполнения данной команды будет выведен список запущенных процессов Linux с указанием имени и PID (персональный идентификатор), используемого процессорного времени.
Ввод этой же команды с ключом
Aux
позволяет получить расширенную информацию о процессах: PID, использование оперативной памяти и процессора, имя пользователя запустившего процесс, команда запустившая процесс и время работы.
Используя различные ключи команды ps, можно получить и другую информацию о запущенных процессах: ID процесса-родителя, значение приоритета, статус (выполняется, спит, состояние подкачки, остановлен, процесс-зомби), доля памяти и процессорного времени в процентах, время старта и т.д.
Ps
выводит информацию о состоянии процессов в текущий момент времени. Для отображения информации о списке запущенных процессов Linux в реальном времени используется команда
Top
Результат вывода команды top похож на вывод команды ps, с той разницей, что информации о процессе постоянно обновляется.
Значение приоритета процесса может изменяться от -20 (высокий) до +20 (низкий). По умолчанию запускаемому процессу выставляется приоритет родительского процесса. Для изменения приоритета запускаемого процесса используется команда
Nice
которая указывает, насколько приоритет нового процесса должен отличатся от приоритета процесс-родителя.
Значения аргумента команды nice от -20 до +19. Команда
Renice
изменяет приоритет запущенных процессов: renice -3522 -uuser–
увеличение приоритета на 3 для процессов пользователя user и с идентификатором 522.
Выставление отрицательных приоритетов доступно только суперпользователю.
Для приостановки, завершения, запуска приостановленного процесса, а также для сообщения процессам другой информации, используются сигналы посылаемые процессам с помощью команды kill, например:
- kill-9 688 – завершение процесса с PID688 в любом случае (сигнал kill);
- kill -15 688 – завершение процесса с PID688 программно (сигнал term);
- kill -19 688 – приостановка выполнения процесса с PID688 (сигнал stop).
«Зомби» в списке запущенных процессов Linux
Частенько в списке запущенных процессов Linux можно увидеть процессы-зомби (в графе статуса таких процессов стоит буква Z). Такие процессы образуются в том случае, если была вызвана команда завершения процесса, родитель которого еще не выполняется и которому может понадобиться обращение к данному процессу. Z-процесс не использует никакие ресурсы.Просмотреть родителей процессов-зомби можно командой
Ps –lax
Для того, чтобы убрать «зомби» из списка запущенных процессов 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 – эта команда отобразит время прошедшее с запуска процесса.
Шаг 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. Также вы познакомились с командами позволяющими управлять данными процессами. С данными командами существует множество комбинаций, поэтому не бойтесь экспериментировать.