
- •Практическая работа
- •Информацию которую выводит команда top
- •Команда top
- •Команда top
- •Сигналы
- •15 Примеров использования в linux команды top
- •2. Уничтожаем задачу без выхода из команды top — нажимаем k
- •3. Переопределяем приоритет процесса без выхода из команды top — нажимаем r
- •4. Изображаем выбранного пользователя в выходных данных команды top — используем top -u
- •5. Изображаем все процессоры / ядра в выходных данных команды top — нажимаем 1 (один)
- •6. Обновление по требованию выходных данных команды top системы unix (или) изменение интервала обновления данных
- •7. Выделение работающих процессов в выходных данных команды top системы Linux — нажмите z или b
- •9. Выход из команды top после заданного числа итераций — используем top -n
- •10. Выполнение команды Top в потоковом режиме
- •12. Получение помощи Help команды Top в командной строке и интерактивно
- •13. Уменьшение числа процессов, выдаваемых в выходных данных команды top — нажмите n
- •14. Изменение заголовка данных, выдаваемых командой Top, и увеличение числа изображаемых процессов
- •15. Сохраните конфигурационные настройки команды top — нажмите w
Информацию которую выводит команда top
можно условно разбить на две части: верхнюю с общей информацией о системе и ресурсах, и нижнюю таблицу процессов. В верхней части можно увидеть информацию о том сколько дней работает система, сколько занято оперативной памяти, сколько запущено процессов и другая информация:
|
|
По умолчанию процессы отсортированы по уровню загрузки процессора. Если необходимо изменить порядок сортировки, нужно нажать комбинацию клавиш Shift+o или Shift+f. После нажатия этой комбинации клавиш будет отображено окно в котором можно выбрать столбец по которому необходимо отсортировать таблицу. Например, чтобы отсортировать таблицу по объему занимаемой памяти нужно нажать комбинацию Shift+o, затем клавишу n и нажать Enter. Чтобы изменить порядок сортировки (убывание/возрастание), необходимо нажимать комбинацию Shift+r.
Чтобы получить краткую справку о программе top нужно нажать клавишу h.
Чтобы отобразить процессы определенного пользователя необходимо в работающей программе top нажать клавишу u и затем набрать имя учетной записи и нажать Enter. Чтобы снова отобразить все процессы нажимаем u и ничего не набирая нажимаем Enter.
Очень удобно программу top использовать для удаления процессов которые загружают систему. Такие процессы (загружающие процессор на 100%) будут по умолчанию вверху таблицы. Смотрим PID процесса, нажимаем клавишу k, пишем PID и нажимаем Enter. Затем пишем номер сигнала 9 и еще раз Enter
УПРАВЛЕНИЕ ПРОЦЕССАМИ
Управление процессами заключается в том, чтобы уметь определить, какие процессы в системе запущены, запускать и останавливать их, изменять приоритеты процессов, менять режим выполнения процессов, переводя их в фоновый режим. Кратко рассмотрим используемые для этих целей команды.
Команда top
Наиболее известной из таких команд является команда top. Для того чтобы увидеть все процессы, выполняющиеся в данный момент в системе, достаточно запустить команду top в следующем формате:
[user]$ top -ef
Команда
[user]$ top axf
позволяет увидеть все процессы в системе, с применением графического отображения отношения "предок-потомок". Впрочем, для того, чтобы увидеть "лес" деревьев "предок-потомок", лучше воспользоваться очень интересным аналогом команды top axf — командой toptree. Вывод этой команды позволяет увидеть "дерево" запущенных в вашей системе процессов. Перечислить здесь все опции команды top невозможно, воспользуйтесь для этого командой man top.
Команда top
Команда top позволяет сделать как бы "моментальный снимок" процессов, запущенных в системе. В отличие от top команда top отображает состояние процессов и их активность "в реальном режиме времени". На рисунке 1 изображено окно терминала, в котором запущена программа top.
Стандартный вывод команды top представлен в следующем листинге: [root@rhel5 ~]# top top - 00:22:15 up 1:38, 2 users, load average: 0.00, 0.01, 0.10 Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 2.0%sy, 0.0%ni, 97.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 385484k total, 380060k used, 5424k free, 15484k buffers Swap: 1052248k total, 4k used, 1052244k free, 252724k cached
PID |
USER |
PR |
NI |
VIRT |
RES |
SHR |
S |
%CPU |
%MEM |
TIME+ |
COMMAND |
2852 |
root |
15 |
0 |
146m |
9308 |
5140 |
s |
0.7 |
2.4 |
0:33.02 |
Xorg |
2528 |
root |
15 |
0 |
1872 |
472 |
392 |
s |
0.3 |
0.1 |
0:00.83 |
gpm |
2616 |
root |
15 |
0 |
24848 |
11m |
3260 |
s |
0.3 |
3.1 |
0:04.80 |
yum- |
updatesd ...........................................................................................................................................................................................................................................
2616 |
root |
17 |
-5 |
0 |
0 |
0 |
s |
0.0 |
0.0 |
0:00.0 |
cqueue/0 |
Вывод команды top.
Как видно из примера стандартный вывод команды top имеет несколько полей, каждое из которых содержит соответствующий атрибут процесса. Описание полей вывода команды top представлено в таблице
Поле |
Описание |
PID |
Идентификатор процесса. |
PPID |
Идентификатор родительского процесса. |
USER |
Идентификатор пользователя, запустившего процесс. |
GROUP |
Идентификатор группы, которой принадлежит процесс. |
S |
Состояние процесса. |
PR |
Приоритет процесса. |
N1 |
Относительный приоритет процесса |
TIME+, TIME |
Количество процессорного времени, которое использует процесс с момента своего запуска. |
VIRT |
Полный объем виртуальной памяти, которую занимает процесс. |
RES |
Объем резидентной виртуальной памяти, которую занимает процесс. |
SHR |
Объем общей виртуальной памяти, которую использует процесс. |
SWAP |
Объем виртуальной памяти процесса, выгруженной на диск. |
%CPU |
Процент использования общего процессорного времени. |
%MEM |
Процент использования доступной физической памяти. |
%MEM |
Процент использования доступной физической памяти. |
CMD |
Команда, использованная для создания процесса. |
Команда top имеет встроенную систему комбинаций клавиш, которая позволяет сортировать вывод по конкретным полям и управлять процессами. Для вывода справочной информации по клавишам необходимо нажать клавишу в процессе работы команды top. Для добавления определенного поля в общий вывод команды top необходимо нажать клавишу и отметить символом * поля, которые необходимо отображать. Вывод команды top схож с выводом команды top, однако он отображает статический снимок процессов. По умолчанию, команда top выводит только информацию о процессах, запущенных в текущей сессии командного интерпретатора bash. Для вывода информации по всем процессам необходимо ввести команду top с ключом -е. Для отображения желаемых полей необходимо ввести команду top с ключом -о поле1,поле2,... , где через запятую перечисляются поля, которые необходимо отобразить. Пример вывода команды top представлен в листингах 2.8 и 2.9.
$ nice -n 5 sleep 30
$ top lax | grep sleep F UID PID PPID PRI NI VSZ RSS WCHAN S TTY TIME COMMAND 0 1000 3567 3543 20 0 6292 3528 wait Ss /0 0:00 bash 0 1000 13098 3567 25 5 2952 628 hrtime SN /0 0:00 sleep 30
Синтаксис команды простой: через ключ -n мы передаем значение приращения nice-фактора, а затем идет команда для которой будет устанавливаться новый nice-фактор. Речь идет именно о приращении, так как реальный nice-фактор нового процесса будет равен nice-фактору родительского процесса сложенному с числом передаваемым команде nice. В приведенном выше примере nice-фактор родительского процесса (оболочки bash) равен нулю, значит nice-фактор дочернего будет 0+5=5, что мы и видим на результатах.
Обычные пользователи могут только увеличивать nice-фактор, но не могут его уменьшать. Сделано это для того, чтобы пользователи не смогли создавать высокоприоритетные процессы. Если от имени пользователя выполнить команду nice -n -5 sleep 30 &, получим сообщение об ошибке. Уменьшать nice-фактор может только пользователь root.
Если необходимо изменить nice-фактор уже запущенного процесса, то используют команду renice. Например:
$ renice 14 13229 13229: старый приоритет 10, новый приоритет 14
где 13229 это PID процесса для которого меняется nice-фактор. Из примера, также видно, что число 14 это уже не приращение, а просто новое значение nice-фактора.
Для информации (не выполнять)
Если необходимо изменить nice-фактор всех процессов одного пользователя, то используется ключ -u. Например, изменим nice-фактор всех процессов пользователя test:
test@adm-ubuntu:~$ top | grep test 4 1001 13256 5630 20 0 8656 3036 wait S 0:00 su - test 0 1001 13297 13266 20 0 3056 824 pipe_w S+ 0:00 grep –color=auto test test@adm-ubuntu:~$ renice 5 -u test 1001: старый приоритет 0, новый приоритет 5 test@adm-ubuntu:~$ top | grep test 4 1001 13256 5630 25 5 8656 3036 wait SN 0:00 su - test 0 1001 13302 13266 25 5 3056 820 pipe_w SN+ 0:00 grep –color=auto test
Для каких практических целей можно использовать nice-фактор? Например, если какие-то процессы занимают в данный момент большое количество процессорного времени, то для более быстрого определения проблемы можно запустить интерпретатор команд с более низким nice-фактором. Операции разного рода кодирования или сжатия, которые требуют много времени (часы), можно запускать с более высоким nice-фактором, чтобы не загружать систему. Быстродействие современных процессоров, таково, что к изменению nice-фактора прибегают все реже, но тем не менее иногда он может быть очень полезен.