Мониторинг в Ubuntu средствами терминала | Ubuntu — любимая ОС

Запущенные процессы в Linux

Автор: Admin

Дата:2012-10-26

Как узнать список запущенных процессов в Linux?

Процесс — это программа выполняющаяся в системе.

1) В большинстве случаев для исследования процессов в Linux используется команда «ps», которая может выполняться как в текстовом режиме так и иметь графическую оболочку.

#ps ax — отображает полную информацию о процессах

PID    TTY      STAT   TIME COMMAND
    1      ?           Ss     0:03 /sbin/init
17676  ?           Ss     0:00 /usr/sbin/pptpd

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

Ее можно применить вместе с grep, для более быстрого поиска нужного нам процесса
# ps ax |  grep pptp
 2036 pts/0    S+     0:00 grep pptp
17676 ?        Ss     0:00 /usr/sbin/pptpd

Здесь он нам нашел наш поиск и сам процесс под номером 17676

А можем воспользоваться уже готовой утилитой поиска процесса
# pgrep -l pp
2111 pptpd

2) Убить процесс нам поможет команда:
# kill 17676 — которая принудительно прекратит его выполнение
# killall pptpd — останавливает процесс по имени

3) Если вам нужно древовидное отображение процессов, то на помощь придет утилита:
# pstree
init —acpid
     —apache2—5*[apache2]
     —atd
     —cron
     —dd
     —freshclam
     —6*[getty]
     —klogd
     —miniserv.pl
     —named—3*[{named}]
     —nmbd
     —pptpd
     —slapd—2*[{slapd}]
     —smbd—smbd
     —sshd—sshd—bash—pstree
     —syslogd
     —udevd
     —xinetd

Здесь, соответственно, видна зависимость процессов друг от друга в древовидном виде.
А более подробную зависимость можно посмотреть если добавить ключ -a
# pstree -a
4) Еще одна очень полезная утилита.
# top — отображение процессов в реальном времени

Tasks:  52 total,   1 running,  51 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.7%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    247780k total,   242104k used,     5676k free,    64152k buffers
Swap:   465844k total,      184k used,   465660k free,   127556k cached
  PID USER      PR  NI  VIRT  SHR S %CPU  RES %MEM    TIME+  COMMAND
 2094 root      18   0  2304  852 R  0.3 1064  0.4   0:01.05 top
 5549 syslog    15   0  1932  528 S  0.3  680  0.3  49:43.08 syslogd
 5571 root      15   0  1868  440 S  0.3  532  0.2  72:10.96 dd
    1 root      15   0  2840  540 S  0.0 1684  0.7   0:03.12 init
    2 root      12  -5     0    0 S  0.0    0  0.0   0:00.00 kthreadd

Здесь отображается используемая память и процессор, приостановленные и рабочие процессы. Отсюда можно произвести изменение приоритета процесса или удалить его.

Просмотреть состояние процесса (простой, остановленный, зависший и др.)

# gtop — может применяться в графическом режиме.

Другие команды Linux

Так, что бы стало понятно зачем и как можно применять команды в Linux. продемонстирую небольшой скрипт Bash.
Данный скрипт проверяет имеется ли процесс c именем smb и в том случае если его нет происходит его старт.
grep -v grep необходим, что бы исключить сам процесс поиска smb

# vi ps

#!/bin/bash
ps ax | grep -v grep | grep smb
if [ $? -ne 0 ]
        then
/etc/init.d/smb start
        else
echo «демон работает» > /dev/null
fi

Количество просмотров: 22240

© Plutonit.ru — Администрирование, настройка Linux и Windows 2009 — 2018

Работа с процессами в 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 — текущее состояние процесса.

    Могут принимать значения:

    1. R — выполнимый процесс;
    2. S — спящий;
    3. D — в состоянии подкачки на диске;
    4. T — остановлен;
    5. Z — зомби.
    6. W — не имеет резидентных страниц;
    7. < — высоко-приоритетный;
    8. N — низко-приоритетный;
    9. L — имеет страницы, заблокированные в памяти.
  • START — дата запуска процесса.
  • TIME — время запуска процесса.
  • COMMAND — команда, запустившая процесс.

Ключи

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

Примеры

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

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

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

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

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

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

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

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

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

Подробный вывод статуса:

cat /proc/<PID>/status

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

cat /proc/<PID>/syscall

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

cat /proc/<PID>/cmdline

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

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

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

Подробное описание на сайте 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 — команда, которая запустила процесс.

# Linux

Была ли полезна вам эта инструкция?

Да            Нет

PS

НАЗВАНИЕ
ps — выдача информации о состоянии процессов

СИНТАКСИС

ps [-e] [-d] [-a] [-f] [-l] [-n файл_с_системой] [-t список_терминалов] [-p список_идентификаторов_процессов] [-u список_идентификаторов_пользователей] [-g список_идентификаторов_лидеров_групп]

ОПИСАНИЕ
Команда ps выдает информацию об активных процессах. По умолчанию информация дается только о процессах, ассоциированных с данным терминалом. Выводятся идентификатор процесса, идентификатор терминала, истраченное к данному моменту время ЦП и имя команды. Если нужна иная информация, следует пользоваться опциями.

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

Командой ps обрабатываются следующие опции:

-e
Вывести информацию обо всех процессах.

-d
Вывести информацию обо всех процессах, кроме лидеров групп.

-a
Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.

-f
Генерировать полный листинг (см. ниже разъяснение смысла колонок).

-l
Генерировать листинг в длинном формате (см. ниже).

-n файл_с_системой
Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.

-t список_терминалов
Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал — это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.

-p список_идентификаторов_процессов
Выдавать информацию только об указанных процессах.

-u список_идентификаторов_пользователей
Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f — в символьном.

-g список_идентификаторов_лидеров_групп
Выводить информацию только о процессах, для которых указаны идентификаторы лидеров групп. Лидер группы — это процесс, номер которого идентичен его идентификатору группы. Shell, запускаемый при входе в систему, является стандартным примером лидера группы процессов.

При указании опции -f ps пытается определить имя команды и аргументы, с которыми был создан процесс, исследуя пользовательский блок процесса. Если это не удается, имя процесса выводится так же, как и при отсутствии опции -f, только заключается в квадратные скобки.

Ниже приводятся заголовки колонок выдачи и поясняется смысл их содержимого. Буквы l или f в скобках означают, что эта колонка появляется соответственно при длинном или полном формате выдачи; отсутствие букв означает, что данная колонка выводится всегда. Отметим, что опции -l и -f влияют только на формат выдачи, но не на список процессов, информация о которых будет предоставлена.

F (l) Флаги (шестнадцатеричные), логическая сумма которых дает следующие сведения о процессе:
00 Процесс терминирован; элемент таблицы процессов свободен.
01 Системный процесс: всегда в основной памяти.
02 Процесс трассируется родительским процессом.
04 Родительский трассировочный сигнал остановил процесс; родительский процесс ждет.
08 Процесс не может быть разбужен сигналом.
10 Процесс в основной памяти.
20 Процесс в основной памяти; блокирован до завершения события.
40 Идет сигнал к удаленной системе.
80 Процесс в очереди на ввод/вывод.
S (l) Статус процесса:
O Активный: обрабатывается процессором.
S Спящий: ожидает завершения события.
R Готов: стоит в очереди на выполнение.
I Рождающийся: процесс создается.
Z Состояние «зомби»: процесс завершен, но родительский процесс не ждет этого.
T Трассируемый: процесс остановлен сигналом, так как родительский процесс трассирует его.
X Растущий: процесс ожидает получения большего объема основной памяти.
UID (f,l) Идентификатор владельца процесса; при указании опции -f выдается входное имя пользователя.
PID Идентификатор процесса (необходим для терминирования процесса).
PPID(f,l) Идентификатор родительского процесса.
C (f,l) Доля выделенного планировщиком времени ЦП.
STIME (f) Время запуска процесса (часы:минуты:секунды). Если процесс запущен более чем 24 часа назад, выдается месяц и день запуска.
PRI (l) Приоритет процесса; большее число означает меньший приоритет.
NI (l) Поправка к приоритету.
ADDR (l) Адрес процесса в памяти.
SZ (l) Размер (в блоках по 512 байт) образа процесса в памяти.

WCHAN (l) Адрес события, которого ожидает процесс. У активного процесса эта колонка пуста.
TTY Управляющий терминал (обычно — терминал, с которого был запущен процесс; см. ниже СЮРПРИЗЫ). Если такового нет, выдается символ ?.
TIME Истраченное процессом время ЦП.
COMMAND Имя программы; если указана опция -f, то выводится полное имя команды и ее аргументы.

Процесс, закончивший выполнение своей программы, и имеющий родительский процесс, не дождавшийся еще завершения, в качестве имени программы получает <defunct>.

ФАЙЛЫ

/dev /dev/sxt/* /dev/tty* /dev/kmem Виртуальная память ядра. /dev/mem Память. /etc/passwd Файл паролей, из которого берется информация об идентификаторах пользователей. /etc/ps_data Внутренняя структура данных. /unix Имя файла, откуда была загружена операционная система.

СМ. ТАКЖЕ kill.

СЮРПРИЗЫ
Во время выполнения команды ps положение вещей может измениться; таким образом, ps дает лишь хорошее приближение к действительности.

Некоторые сведения, относящиеся к процессам, отмеченным как <defunct>, не соответствуют действительности.

Если не указана ни одна из опций -t, -p, -u, -g, команда ps проверяет стандартный ввод, стандартный вывод и стандартный протокол (в указанном порядке) для определения управляющего терминала и пытается вывести информацию о процессах, ассоциированных с этим терминалом. В ситуации, когда все три стандартных направления ввода/вывода переназначены, ps не может найти и выдать имя управляющего терминала.

Команда ps -ef может не отметить начало входа в систему, а вывести сведения о последнем запуске для данной терминальной линии.

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


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

Закрыть меню