Команды linux управления процессами

Управление процессами в Linux

Программы — это наборы инструкций, которые выполняет компьютер. Когда мы запускаем программу, инструкции копируются в память компьютера.

После этого в памяти выделяется пространство под хранение переменных и других вещей, необходимых для запуска программы.

Запущенный экземпляр программы называется процессом. Процессами можно управлять.

Как узнать, какие процессы запущены сейчас

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

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

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

1. [email protected]: top
2. Tasks: 174 total, 3 running, 171 sleeping, 0 stopped
3. KiB Mem: 4050604 total, 3114428 used, 936176 free
4. Kib Swap: 2104476 total, 18132 used, 2086344 free
5.
6. PID USER %CPU %MEM COMMAND
7. 6978 karpaff 3.0 21.2 firefox
8. 11 root 0.3 0.0 rcu_preempt
9. 6601 karpaff 2.0 2.4 kwin
10. .

Давайте подробнее разберемся, что здесь происходит:

  • Строка 2. Задачи (tasks) — это второе название процессов. В любой момент времени в вашей системе выполняется сразу несколько процессов. Большая часть из них системные. Многие — спят, и это нормально. «Спящие» процессы ожидают какого-то события, чтобы перейти в активное состояние.
  • Строка 3. Это анализ оперативной памяти. Не переживайте, если используется огромное количество памяти: Linux сохраняет недавно открытые программы для повышения быстродействия. Если какому-то процессу понадобится эта память — она очистится.
  • Строка 4. Это анализ виртуальной памяти системы. Если используется большое количество памяти — пора задуматься о ее увеличении. При наличии современного компьютера с достаточным количеством памяти такой проблемы у вас не возникнет.
  • Строки 6-10. Список наиболее ресурсоемких процессов системы в порядке убывания. Он обновляется в реальном времени — наблюдать за этим одно удовольствие. У вас перед глазами все, что происходит в вашей системе. Два важных столбца — используемая память и процент использования ЦП. Если какой-то из них находится на высоком уровне продолжительное время, стоит узнать, почему так. В столбце USER указывается пользователь, который запустил данный процесс, а PID это столбец, в котором указаны ID процессов — их уникальные идентификаторы.

Команда top предоставляет информацию о системе в реальном времени и показывает лишь то число процессов, которые умещаются на экране.

Есть другая команда — ps (processes, процессы). Обычно ее используют для того, чтобы увидеть список процессов в текущем терминале. Но если добавить аргумент aux , выведется полный список процессов, что гораздо полезнее.

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

Читайте также:  Cut with delimiter in linux

Как удалить из памяти процессы, потерпевшие сбой

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

Это не страшно: процесс условного Firefox можно завершить и запустить браузер снова. Но сначала нам нужно узнать ID процесса браузера — PID (proccess ID, идентификатор процесса). Вот, как это будет выглядеть:

1. [email protected]: ps aux | grep 'firefox'
2. karpaff 6978 8.8 23.5 2344096 945452 ? Sl 08:03 49:53 /usr/lib64/firefox/firefox
3. [email protected]:

Рядом с пользователем karpaff находится число — это и есть PID. Его мы будем использовать для обозначения процесса, который мы хотим закрыть. Для завершения процесса существует специальная команда — kill .

1. [email protected]: kill 6978
2. [email protected]: ps aux | grep 'firefox'
3. karpaff 6978 8.8 23.5 2344096 945452 ? Sl 08:03 49:53 /usr/lib64/firefox/firefox
4. [email protected]:

Обычно простой запуск kill завершает зависший процесс. В этом случае команда отправляет параметр по умолчанию — -1 . Этот сигнал указывает процессу, ему надо закрыться. Сначала всегда нужно попытаться воспользоваться этим вариантом: он короче.

Однако это не всегда работает. В примере выше мы запускали ps, но процесс все еще работал. Ничего страшного, значит, мы просто подадим параметр -9 — это сигнал для принудительного завершения процесса.

1. [email protected]: kill -9 6978
2. [email protected]: ps aux | grep 'firefox'
3. [email protected]:

Примечание. Пользователь без root-прав может завершать лишь те процессы, которые он запустил. Root-пользователь может завершить любой.

Что делать, если завис рабочий стол

Иногда зависший процесс тянет за собой и рабочий стол. Давайте разберемся, что делать в ситуации, когда рабочий стол тоже завис.

В Linux работает сразу несколько виртуальных консолей. Большую часть времени мы видим консоль номер 7 — с GUI. Но мы можем легко обратиться к другим.

Если GUI завис, можно закрыть проблемные процессы с другой консоли. Для переключения между консолями используйте последовательность Ctrl + Alt + F . Например, после нажатия Ctrl + Alt + F2 вы подключитесь к консоли, с помощью которой сможете получить id приведших к сбою процессов и отключить их. А Ctrl + Alt + F7 вернет вас в GUI, чтобы проверить, все ли в порядке.

Общая тактика такая: отключать процессы до тех пор, пока рабочий стол не «отвиснет».

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

Фоновые процессы и процессы переднего плана

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

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

Читайте также:  Listing pci devices linux

В качестве примера приведем команду sleep . Эта команда ждет, когда пройдет заданное количество времени и завершает свою работу.

Для отображения работающих в фоне процессов можно использовать команду jobs .

1. [email protected]: sleep 5
2. [email protected]:

Если вы запустите эту программу, то заметите, что терминал ждет 5 секунд и только потом предлагает ввод снова. Но если мы сделаем то же самое, но добавим в конец & (амперсанд), мы сообщим терминалу, что программу нужно запустить на фоне.

1. [email protected]: sleep 5 &
2. [1] 21634
3. [email protected]:
4. [email protected]:
5. [1]+ Done sleep 5

В этот раз процессу присваивается номер (и он, конечно же, выводится), и приглашение к вводу появляется сразу. Мы можем продолжать работать, пока выполняется фоновый процесс. Если по прошествии 5 секунд вы нажмете Enter, вы увидите сообщение, в котором говорится о том, что задание завершено.

Мы также имеем возможность перемещать процессы между фоном и передним планом. Делается это с помощью комбинации Ctrl + Z. После нажатия этой последовательности текущий фоновый процесс останавливается и перемещается на передний план.

Также мы можем использовать команду fg (foreground, передний план). С ее помощью мы можем перевести фоновый процесс на передний план.

1. [email protected]: sleep 15 &
2. [1] 21637
3. [email protected]: sleep 10
4. (здесь вы жмете Ctrl + Z, приглашение к вводу появляется вновь)
5. [email protected]: jobs
6. [1]- Running sleep 15 &
7. [2]+ Stopped sleep 10
8. [email protected]: fg 2
9. [1] Done sleep 15
10. [email protected]:

Совет. В Windows Ctrl + Z служит для отмены. Часто пользователи, которые перешли на Linux с Windows, используют эту комбинацию и удивляются — куда же пропала программа и почему ввод появился снова. Если вы допустили эту ошибку, не переживайте. Используйте jobs , чтобы узнать номер задачи, который был назначен программе, и верните ее на передний план с помощью fg .

Что нужно запомнить

Команды

top
Выводит данные о процессах, запущенных в системе, в реальном времени.

ps
Выводит список процессов, запущенных в системе.

kill
Завершает процесс

jobs
Выводит список текущих фоновых процессов.

fg
Переводит фоновый процесс на передний план.

Ctrl + Z
Остановить текущий процесс переднего плана и перевести его в фон.

Практически задания

1. Запустите несколько программ на рабочем столе. Затем с помощью команды ps определите их PID и завершите их.
2. Попробуйте сделать то же самое, но сначала переключитесь на другую виртуальную консоль.
3. Поиграйтесь с командой sleep и перемещением процессов между передним и фоновым планами.

Источник

Работа с процессами в Linux

Обновлено

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

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

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 661 0.0 0.0 4072 8 tty1 Ss+ Jul03 0:00 /sbin/mingetty
root 662 0.0 0.0 4072 8 tty2 Ss+ Jul03 0:00 /sbin/mingetty
root 16355 0.0 0.0 171636 3308 pts/0 S 15:46 0:00 sudo su
root 16366 0.0 0.0 140896 1556 pts/0 S 15:46 0:00 su
root 16368 0.0 0.0 108316 1944 pts/0 S 15:46 0:00 bash
root 18830 0.0 0.0 110244 1172 pts/0 R+ 16:20 0:00 ps u

  • USER — учетная запись пользователя, от которой запущен процесс.
  • PID — идентификатор процесса.
  • %CPU — потребление процессорного времени в процентном эквиваленте.
  • %MEM — использование памяти в процентах.
  • VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
  • RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
  • TTY — терминал, из под которого был запущен процесс.
  • STAT — текущее состояние процесса. Могут принимать значения:
    1. R — выполнимый процесс;
    2. S — спящий;
    3. D — в состоянии подкачки на диске;
    4. T — остановлен;
    5. Z — зомби.
    6. W — не имеет резидентных страниц;
    7. < —высоко-приоритетный;
    8. N — низко-приоритетный;
    9. L — имеет страницы, заблокированные в памяти.
  • START — дата запуска процесса.
  • TIME — время запуска процесса.
  • COMMAND — команда, запустившая процесс.
Читайте также:  Vpn android to linux

Ключи

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

Примеры

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

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

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

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

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

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

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

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

kill `ps aux | grep ‘apache’ | awk »`

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью
Adblock
detector