Рис. 2.3. Фрагмент таблицы процессов, выводимой командой top
Утилиту назвали top потому, что процессы, наиболее активно использующие процессорное время, будут находиться вверху (top – верх). Любопытное наблюдение – при отсутствии «прожорливых» процессов сам top может возглавлять список приоритетных задач. Это вполне объяснимо – этой программе необходимо опрашивать состояние системы с периодичностью в несколько секунд, что ощутимо нагружает центральный процессор (периодичность – причина того, что в приведенном примере «снимок» зафиксировал процесс top в числе наименее затратных процессов).
В заголовке утилита top выводит обобщенную информацию о пользователях, запущенных процессах и их состоянии, расходовании процессорного времени, а также расходе памяти – оперативной и виртуальной.
Поля, выводимые программой top
· PID — идентификатор процесса;
· USER — имя пользователя – владельца процесса;
· PRI — приоритет процесса;
· SIZE — размер памяти процесса в килобайтах (Кб), включая области кода, данных и стека;
· RSS — общий объем памяти, выделенной процессу (Кб);
· STAT — текущее состояние процесса;
· %CPU — процентная доля процессорного времени, выделенного на процесс с момента предыдущего обновления;
· %MEM — процентная доля памяти, выделенной процессу с момента предыдущего обновления;
· TIME — общее процессорное время, израсходованное процессом с момента его запуска;
· COMMAND — имя исполняемого файла.
Утилита выводит информацию о наиболее активных процессах, а поскольку их активность непостоянна, то выводимая таблица обновляется по умолчанию каждые две секунды. Программа работает в интерактивном режиме и управляется с клавиатуры. Например, при обнаружении процесса, активность которого представляет опасность для системы, его можно сразу удалить. Для этого следует нажать клавишу с первым символом соответствующей команды k – kill, а после запросов программы поочередно указать идентификатор процесса и номер посылаемого сигнала. Опция u позволит указать имя пользователя или его UID и наблюдать только за процессами, владельцем которых является этот UID. Нажатие символа h позволит вывести справку по интерактивным командам.
Вывод информации в файл производится командой
top -n 1 -b > /tmp/top.out,
где b – выводить информацию в текстовом формате;
n– количество повторов.
Можно упомянуть еще несколько полезных утилит, используемых для наблюдения за процессами. Часто интерес предсталяют не только сами процессы, но и связанные с ними субъекты и объекты. Для отслеживания подобных связей неоценимую помощь может оказать утилита lsof (list open files). Она отображает список всех открытых файлов, директорий, библиотек, сокетов и устройств, связанных с заданным процессом.
Например, администратор обратил внимание на подозрительный процесс и желает узнать, с какими файлами тот работает. Эти данные выводятся с помощью команды
lsof -p 3245,
где после аргумента -p указывается PIDконтролируемого процесса. Нужный процесс можно указать и по имени: