суббота, 10 февраля 2007 г.

Linux. Мониторинг системы.

Данная статья написана в основном для новичков в Linux. Большинство информации, представленной здесь, может быть найдено в страницах man. Если Вы опытный пользователь Linux - большинство из написанного здесь Вам должно быть знакомо. Так что можете спокойно переходить к другим статьям или же, если хотите проверить свои знания - можете просмотреть мельком. Но а в случае если Вы являетесь новичком в Linux, если Вам нудно читать страницы man и хочется узнать обо все этом побыстрей - эта статья для Вас.


Команда: top

Это одна из чаще всего используемых комманд раздела мониторинга системы. Команда top предоставляет информацию о запущенных процессах, включая данные об использовании процессом CPU и памяти, пользователях, запустивших процесс и их pid (Process ID), а также о времени, прошедшем с момента запуска процесса. Данные все время обновляются с определенной частотой (по умолчанию 3 сек). Изменить частоту можно нажав клавишу "s" - ввести нужное число - Enter.

Вывод команды top показан ниже:

$ top - 12:39:28 up 2:20, 1 user, load average: 0.09, 0.14, 0.09
Tasks: 131 total, 1 running, 130 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.7% us, 0.5% sy, 0.0% ni, 97.5% id, 0.0% wa, 0.2% hi, 0.2% si
Mem: 1028144k total, 911324k used, 116820k free, 28604k buffers
Swap: 530104k total, 20268k used, 509836k free, 396324k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5144 root 16 0 119m 63m 6452 S 1 6.3 3:07.04 Xorg
7867 serhiy 16 0 102m 18m 13m S 1 1.9 0:01.15 konsole
6379 serhiy 15 0 162m 35m 24m S 1 3.5 0:25.17 ktorrent
3666 root 15 0 0 0 0 S 0 0.0 0:00.82 kjournald
5393 serhiy 15 0 162m 33m 18m S 0 3.3 0:13.74 stardict
7885 serhiy 16 0 10700 1300 952 R 0 0.1 0:00.49 top
1 root 16 0 2640 564 476 S 0 0.1 0:00.89 init
2 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0
5 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/1
6 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1
7 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/1
8 root 10 -5 0 0 0 S 0 0.0 0:00.06 events/0
9 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/1
10 root 10 -5 0 0 0 S 0 0.0 0:00.00 khelper

Вы можете модифицировать вид выводимой информации. Так, нажав "i" можно отключить вывод неработающих процессов. Повторное нажатие "i" вернет все в прежнее положение. "M" - отсортирует по количеству используемой памяти, а "P" - по использованию процессора.
Приведенные опции вводились при запущенной команде top. В дополнение к этому, существуют опции, которые можно вводить при запуске команды. Например, с помощью "u" можно задать вывод только процессов, принадлежащих определенному пользователю:
$ top -u serhiy
top - 12:56:54 up 2:37, 1 user, load average: 0.08, 0.10, 0.09
Tasks: 137 total, 1 running, 136 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.7% us, 0.2% sy, 0.0% ni, 98.8% id, 0.0% wa, 0.2% hi, 0.2% si
Mem: 1028144k total, 972308k used, 55836k free, 33260k buffers
Swap: 530104k total, 20268k used, 509836k free, 445252k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6379 serhiy 15 0 162m 35m 25m S 1 3.6 0:30.55 ktorrent
5393 serhiy 15 0 162m 33m 18m S 0 3.3 0:15.96 stardict
7867 serhiy 15 0 102m 18m 13m S 0 1.9 0:03.91 konsole
8109 serhiy 16 0 10696 1304 952 R 0 0.1 0:00.24 top
5210 serhiy 17 0 7584 1896 1188 S 0 0.2 0:00.09 startkde
5260 serhiy 16 0 20144 852 492 S 0 0.1 0:00.00 ssh-agent
5263 serhiy 16 0 10084 696 528 S 0 0.1 0:00.00 dbus-launch
5264 serhiy 17 0 8448 888 744 S 0 0.1 0:00.00 dbus-daemon
5296 serhiy 18 0 74596 5720 2120 S 0 0.6 0:00.27 kdeinit

С помощью опции "k" можно убить процесс, а "r" (renice) изменит его приоритет (колонка PR в выводе команды top).
Для того, чтобы выйти из программы, нужно нажать клавишу "q".

Для более подробной информации о системных процессах следует обратиться к псевдофайловой системе /proc. Здесь информация о процессах представлена в виде файлов.
Будьте осторожны, поскольку это не обычные файлы, а лишь текущее состояние устройства, эти файлы редактировать НЕЛЬЗЯ!

Команда: ps

'ps' отображает список запущенных процессов.

$ ps
PID TTY TIME CMD
11065 pts/2 00:00:00 bash
11082 pts/2 00:00:00 ps

По умолчанию информация дается только о процессах, ассоциированных с данным терминалом. Выводятся идентификатор процесса, идентификатор терминала, истраченное к данному моменту время ЦП и имя команды. Если нужна иная информация, следует пользоваться опциями. Следует заметить, что данная команда может работать как в стандартном виде записи опций (-опция), так и в режиме BSD (знака "-" между командой и опцией нет).

Так, чтобы просмотреть информацию о всех запущенных в системе процессах можно воспользоваться как

ps -e
ps -ef
ps -eF
ps -ely

так и

ps ax
ps axu

Обычно используется команда ps axu. Она выдает практически всю информацию о системе.

serhiy@kubuntu:~$ ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2640 564 ? S 10:19 0:00 init [2]
root 2 0.0 0.0 0 0 ? S 10:19 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 10:19 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 10:19 0:00 [watchdog/0]
................................................
Вывод команды очень большой. Поэтому я привел лишь начало. Если же нужна информация о запущенных Вами процессах - воспользуйтесь.
ps cxu
или
ps cx
В первом случае информация будет выведена в более подробном виде. Обычно данную программу запускают для того, чтобы узнать PID (первая колонка) команды, с последующим ее уничтожением с помощью команды kill -9.

Команда: free

'free' показывает информацию о памяти компьютера, включающей в себя физическую память (RAM), swap, разделяемую память и буферы, используемые ядром. Вся информация выдается в килобайтах.
$ free
total used free shared buffers cached
Mem: 1028144 1020468 7676 0 16316 379828
-/+ buffers/cache: 624324 403820
Swap: 530104 21644 508460

В строке Mem: показано использование физической памяти, в строке Swap: — использование пространства подкачки, а в строке -/+ buffers/cache: — объем физической памяти, выделенный в настоящее время для буферов системы. Команда free выводит лишь единоразово информацию о задействованной памяти. Для того, чтобы просматривать показатели каждые n секунд, нужно воспользоваться опцией -s n, где n - число в секундах. Но это может быть неудобно. Строки пробегают по экрану и человеку тяжело уловить разницу. Поэтому следует воспользоваться командой watch:
$watch free
Вы можете менять задержку между обновлениями (по умолчанию 2 сек.) с помощью параметра -n или сделать так, чтобы любые отличия результатов выделялись, указав параметр -d, как показано в следующей команде:
$watch -n 1 -d free
Команда: du

'du' используется для того, чтобы узнать размер директории
$ du
Без дополнительных опций команда du выдает список директорий, находящихся в текущей директории, и их размеры. Последняя строка показывает общий размер текущей директории. По умолчанию информация отображается в килобайтах. Во многих случаях это может быть неудобно. Поэтому воспользуемся некоторыми дополнительными опциями.
$ du -h /home/serhiy/pic/
4,0M /home/serhiy/pic/from_sky
1,1M /home/serhiy/pic/smoke
11M /home/serhiy/pic/mini_world
16M /home/serhiy/pic/

В приведенном примере видно, что папка pic в домашней директории пользователя serhiy содержит три вложенных папки, размерами 4.0, 1.1, и 11 мегабайт. Размер всей папки - 16 Мб. Опция -h задает отображение в более удобном виде.
$ du -ah

du -ah /home/serhiy/pic/
148K /home/serhiy/pic/from_sky/1.jpg
144K /home/serhiy/pic/from_sky/2.jpg
168K /home/serhiy/pic/from_sky/3.jpg
100K /home/serhiy/pic/from_sky/4.jpg
..............................

136K /home/serhiy/pic/mini_world/mini_world_84.jpg
152K /home/serhiy/pic/mini_world/mini_world_85.jpg
11M /home/serhiy/pic/mini_world
16M /home/serhiy/pic/
С помощью опции -a можно задать вывод размера каждого файла. Информация о полном размере вложенных папок также выводится.
$ du -mc /home/serhiy/pic/ | grep total
16 total
Здесь опция -m задает, чтобы размер выводился в мегабайтах, а -c добавляет дополнительную строку, показывающую полный размер директории (total). Таким образом мы можем воспользоваться командой grep, чтобы оставить лишь информацию о размере директории /home/serhiy/pic/. Это будет полезно, если директория содержит много вложенных поддиректорий и файлов, а Вам нужно знать лишь ее полный размер. Хотя это можно сделать и проще:
$ du -s /home/serhiy/pic/
16028 /home/serhiy/pic/

Если же Вам нужно узнать размер директории без входящих в нее директорий, воспользуйтесь опцией -S.
$ du -Sh /home/serhiy/pic/
4,0M /home/serhiy/pic/from_sky
1,1M /home/serhiy/pic/smoke
11M /home/serhiy/pic/mini_world
4,0K /home/serhiy/pic/

Как видно, директория pic/ содержит три поддиректории и ничего больше. Поэтому ее размер 4,0K.
Еще один пример из серии исключений:
$ du -h --exclude=*.jpg /home/serhiy/pic/
4,0K /home/serhiy/pic/from_sky
4,0K /home/serhiy/pic/smoke
4,0K /home/serhiy/pic/mini_world
16K /home/serhiy/pic/

Опция --exclude=*.jpg - исключает из отображения полной иформации о размере директории /home/serhiy/pic/ и ее поддиректории файлы, имеющие в своем названии .jpg. Поскольку в указанной директории и поддиректориях находятся лишь изображения в формате .jpg, все папки занимают 4,0K. Вместо .jpg можно вставить любую последовательность символов.
Например:
serhiy@kubuntu:~/pic/from_sky$ du -h --exclude=1?.jpg
2,8M .
serhiy@kubuntu:~/pic/from_sky$ du -h
4,0M .

В первом случае я исключил все файлы, состоящие из двух символов, первый из которых 1.

Команда: df

'df' - показывает информацию об использовании дискового пространства.
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 9629880 5732280 3408424 63% /
varrun 514072 112 513960 1% /var/run
varlock 514072 4 514068 1% /var/lock

Вывод команды df состоит из 6 колонок. Fylesystem - физический раздел, Mounted on - точка монтирования этого раздела, 1K-blocks - размер раздела в килобайтах, Used - сколько занято, Available - свободно, Use% - сколько занято места в процентах.
$ df -h
Как и в случае с командой du, опция -h задает вывод в удобном для человека виде. Обычно это мегабайты и гигабайты. (-m - вывести только в мегабайтах)
Команда df имеет и другие опции, но большинство пользователей ограничиваются лишь приведенными, поэтому я их рассматривать не буду. Если Вам интересно знать больше. обратитесь к man df.

Если хочется узнать лишь информацию о том, сколько места в процентах используется на заданном диске, то можно воспользоваться утилитами grep и cut.
$ df -h | grep /dev/sda8 | cut -c41-43
83%
Здесь grep из вывода команды df -h вырезает лишь строку, где встречается /dev/sda8 (на этот раздел у меня примонтирована директория /home), а cut-c41-43 обрезает лишь 41-43 символы строки (именно там находится информация о процентном использовании разделов).

Команда: who

Поскольку операционная система Linux является многопользовательской, количество пользователей компьютера может быть больше чем один. Для того чтобы узнать, кто работает за компьютером в данный момент, и предназначена команда who. Эта команда показывает, кто работает за компьютером, сколько времени прошло с момента, когда он вошел в систему, и когда он это сделал.
$ who
serhiy tty2 2007-02-04 13:50
root tty3 2007-02-04 13:50
serhiy :0 2007-02-01 10:19

С помощью этой команды можно узнать и информацию о себе:
$ whoami
serhiy

Команда: w

'w' - это собранный воедино вывод команд 'uptime', 'who' и 'ps a' для более подробной информации о системе. Для того, чтобы задать информацию для одного пользователя, а не для всех, допишите имя пользователя к команде:
w serhiy
14:05:12 up 3 days, 3:46, 1 user, load average: 0,35, 0,32, 0,33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
serhiy :0 - Thu10 ?xdm? 9:06 0.09s /bin/sh /usr/bin/startkde

Команда: vmstat
vmstat - показывает информацию о процессах , виртуальной памяти, физических томах и активности ЦПУ . По умолчанию выдается полный список статистики с момента загрузки системы, что не очень полезно с точки зрения анализа ситуации в данный момент. Поэтому, стоит запускать vmstat с аргументом interval, указанным в секундах.

$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 21680 22248 16480 416000 0 0 99 45 166 3 3 1 95 1
0 0 21680 21872 16504 415976 0 0 0 34 1250 3087 2 1 98 0
0 0 21680 25388 16520 416436 0 0 96 11 1209 3458 3 1 95 1


(вывод может отличаться в зависимости от используемой системы)

Каждая последующая линия показывают параметры системы за предыдущие 5 секунд.
Рассмотрим поля вывода команды vmstat:

procs - число процессов, которые: r - находятся в очереди на выполнение;
b - заблокированы в ожидании ресурсов.

memory - информация о памяти: swpd - количество используемой виртуальной памяти;
free - незадействованная память; buff - количество памяти, используемой в качестве буфера, cache - в качестве кэш.

swap: si - количество свап-памяти взятой с диска, so - записанной на диск (/s).

IO: bi - количество блоков взятых с блочного устройства (жесткий диск), b0 - отправленных на блочное устройство.

System: in - количество прерываний за секунду, cs - количество контекстных переключений за секунду.

CPU: процент цикла процессора, затрачиваемый на различные режимы: us - пользователь; sy - система; id - ожидание; wa - ввод/вывод.

Команда: iostat
(входит в пакет sysstat).
iostat (input/output statistics) - без аргументов показывает краткую статистику использования процессора и дисковых операций ввода/вывода:
$ iostat
Linux 2.6.15-23-amd64-generic (kubuntu) 21.02.2007

avg-cpu: %user %nice %system %iowait %steal %idle
1,64 0,87 0,84 1,33 0,00 95,32

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
hda 0,00 0,00 0,00 152 0
sda 9,97 399,79 182,30 18796197 8570744

В первой строке представлены версия ядра системы, имя узла и текущая дата. Во второй - усредненная информация использования процессора после загрузки системы. В поле Device - данные использования дисковых устройств (hda и sda):

tps - число операций передачи данных (или операций ввода/вывода) в секунду;
Blk_read/s - число блоков (обычно 512 байт), прочитанных за секунду;
Blk_wrtn/s - число блоков, записанных за секунду;
Blk_read - общее число прочитанных блоков;
Blk_wrtn - общее число записанных блоков.

Если Вам не удобно возиться с блоками, можете воспользоваться ключами -k - для отображения в килобайтах и -m - мегабайтах.

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


13 коммент.:

Анонимный комментирует...

Отличный пост, открыл для себя много нового. Отправляю ссылку на forum.ubuntu.ru :-)

serhiy комментирует...

Рад что понравилось :). Надеюсь и другим будет полезно. Если что нужно добавить или уточнить - пишите.

Анонимный комментирует...

vmstat, sar, iostat - все что нужно для анализа загрузки системы (для линуха последние 2 идут в пакете sysstat).

serhiy комментирует...

vmstat, sar, iostat - все что нужно для анализа загрузки системы (для линуха последние 2 идут в пакете sysstat)

Мне кажется что это немного выше уровня новичка. Хотя для полноты желательно бы и добавить.

Анонимный комментирует...

спасибо за массу информации

тем не менее уменя на SuSE 10.2 вот так в консоли:

$iostat
bash: iostat: command not found
(под рутом тот же ответ)

с уважением,
Михаил

serhiy комментирует...

Здравствуйте Михаил.
Программа iostat вместе с sar входят в пакет sysstat. Установите RPM пакет sysstat и все должно появиться.
С уважением, Сергей.

Unknown комментирует...

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

calibra комментирует...

Телефоны и модемы Скайлинк обращайтесь.

Анонимный комментирует...
Этот комментарий был удален автором.
Generic Viagra Online комментирует...

а также о времени, прошедшем с момента запуска процесса. Данные все время обновляются с определенной частотой (по умолчанию 3 сек). Изменить частоту можно нажав клавишу "s" - ввести нужное число

Viagra Pharmacy комментирует...

В первом случае информация будет выведена в более подробном виде. Обычно данную программу запускают для того, чтобы узнать PID (первая колонка) команды, с последующим ее уничтожением с помощью команды kill -9.

Анонимный комментирует...

The cauѕe these ingгediеnts aгe used in thiѕ
ѕenѕual massаge arе becausе they help an
apρealing thought prοcess, is іt?

sensual mаѕsage therapy involνеs plaсіng heatеd baѕalt the
maѕsage to usе minіmal οіl, toavoid οil
on the hаirsbreadth, or bе ωholly oil
frеe. baths, hamamѕ, oг Jaсuzzi that аrе sіtuateԁ in the Puddle
regiοn, уou won't be lamentable you did.

my web page :: web site
my page:

Анонимный комментирует...

Pastes are isotropic but may exhibit anomalous double refraction.
Solution Options: It was decided to use a web services simulator to simulate the exact functions of a web services backend.

After February 27, The Sim Online servers
were shut down and it is now known as EA land,
old account holders can still come back of course, and its the same game.

We would like to invite you to join our virtual airline in
Ireland if you have some time that you can spend with is to fly online.

Every plane is actually the virtual model of the real aircraft, including the controls that you can
setup with the working, clickable cockpit.