Список запущенных процессов — это снимок состояния системы в конкретный момент. Он помогает диагностировать зависания, найти подозрительное ПО, оценить потребление памяти или сравнить поведение машины «до» и «после» изменений. Чтобы снимок был полезен для анализа, его нужно сохранить не просто глазами с экрана, а в файл подходящего формата. Ниже — рабочие способы для Windows и Linux, от быстрого текстового дампа до периодического сбора данных.
- Зачем сохранять процессы именно в файл
- Windows: основные способы
- Диспетчер задач — быстро, но ограниченно
- Командная строка: tasklist
- PowerShell: гибкость и структурированные данные
- wmic — устаревающий, но ещё встречающийся вариант
- Linux: ps, top и их сохранение
- Мгновенный снимок через ps
- Снимок top в один нажатие
- Что ещё стоит захватить одновременно
- Как организовать периодический сбор
- На Windows: планировщик задач
- На Linux: cron
- Сравнение способов
- Как анализировать сохранённые данные
- Типичные ошибки
- Практические рекомендации
Зачем сохранять процессы именно в файл
Экранная утилита показывает состояние только сейчас. Если проблема возникает эпизодически — например, раз в несколько часов растёт память или появляется неизвестный процесс — без истории восстановить картину не получится. Файл со списком процессов решает три задачи:
- Фиксация момента. Вы получаете доказуемый снимок: что было запущено, под каким пользователем, сколько ресурсов потребляло.
- Сравнение во времени. Два и более снимка позволяют увидеть, какой процесс появился, исчез или начал расти.
- Передача специалисту. Текстовый файл можно отправить в поддержку или коллеге без удалённого доступа к машине.
Важно понимать ограничение: список процессов — это не полный дамп системы. Он не содержит содержимое памяти, сетевой трафик или историю запусков. Для глубокой диагностики его дополняют журналами событий, данными мониторинга и при необходимости дампами отдельных процессов.
Windows: основные способы
Диспетчер задач — быстро, но ограниченно
Во вкладке «Подробности» диспетчера задач можно добавить нужные столбцы (правый клик по заголовку таблицы) и скопировать строки через контекстное меню. Это удобно для разовой фиксации, но формат копирования неудобен для автоматической обработки, а столбцы приходится настраивать вручную каждый раз.
Командная строка: tasklist
Классический способ — встроенная утилита tasklist. Она выводит имя образа, идентификатор процесса (PID), имя сессии, объём памяти:
tasklist /v > C:\logs\processes.txt
Ключ /v добавляет подробный режим (статус, пользователь, время работы ЦП), перенаправление > записывает результат в файл. Полезные варианты:
- tasklist /svc — показывает службы внутри процессов svchost.exe; без этого сложно понять, какая именно служба нагружает систему.
- tasklist /fo csv /v > processes.csv — вывод в формате CSV, который открывается в Excel и легко фильтруется.
- tasklist /fi «memusage gt 200000» — фильтр по потреблению памяти (значение в килобайтах).
Для анализа в Excel CSV-формат предпочтительнее: столбцы разделяются автоматически, и можно сортировать по любому полю.
PowerShell: гибкость и структурированные данные
PowerShell даёт больше контроля над составом данных. Базовый вариант:
Get-Process | Export-Csv -Path C:\logs\processes.csv -NoTypeInformation -Encoding UTF8
Если нужны владелец процесса и путь к исполняемому файлу (это критично при поиске подозрительного ПО), используйте WMI/CIM:
Get-CimInstance Win32_Process | Select-Object ProcessId, Name, ExecutablePath, CommandLine | Export-Csv processes.csv -NoTypeInformation
Поле CommandLine особенно ценно: оно показывает, с какими аргументами запущен процесс. Один и тот же исполняемый файл может запускаться с разными параметрами, и без этой информации картина неполная.
wmic — устаревающий, но ещё встречающийся вариант
Утилита wmic долгое время была стандартом для таких выгрузок (wmic process get … /format:csv). В новых версиях Windows она постепенно удаляется из системы, поэтому для новых сценариев лучше опираться на PowerShell и CIM-командлеты. Если скрипт должен работать на старых машинах, предусмотрите оба варианта.
Linux: ps, top и их сохранение
Мгновенный снимок через ps
Утилита ps делает снимок текущего состояния. Наиболее информативная команда:
ps auxf > /tmp/processes.txt
Расшифровка ключей: a — все процессы всех пользователей, u — подробный формат с владельцем и потреблением ресурсов, x — включая процессы без терминала, f — дерево родительских связей. Дерево важно: оно показывает, кто кого породил, что помогает понять происхождение процесса.
Более машиночитаемый вариант с сортировкой по памяти:
ps -eo pid,user,%cpu,%mem,etime,cmd —sort=-%mem > processes.txt
Здесь явно задан набор столбцов: PID, пользователь, проценты CPU и памяти, время работы и полная командная строка.
Снимок top в один нажатие
В интерактивном top нажмите клавишу W, чтобы сохранить текущую конфигурацию, и используйте пакетный режим для записи в файл:
top -b -n 1 > snapshot.txt
Ключи означают: -b — пакетный режим без интерфейса, -n 1 — одна итерация. Если убрать единицу, top будет дописывать снимки каждые несколько секунд — это уже примитивный мониторинг.
Что ещё стоит захватить одновременно
- free -m — общее состояние памяти, чтобы интерпретировать цифры процессов в контексте.
- df -h — заполненность дисков; переполнение часто маскируется под другие проблемы.
- uptime — средняя загрузка за минуты, полезна для сопоставления нескольких снимков.
Собирать эти данные лучше одним скриптом в один файл или в файлы с общей меткой времени — так проще сопоставлять.
Как организовать периодический сбор
Разовый снимок отвечает на вопрос «что происходит сейчас». Для эпизодических проблем нужен сбор по расписанию.
На Windows: планировщик задач
- Подготовьте PowerShell-скрипт, который добавляет строку с меткой времени и списком процессов в общий CSV-файл.
- Откройте планировщик задач и создайте задание с нужным интервалом (например, каждые 15 минут).
- В действии укажите запуск powershell.exe с параметром -File и путём к скрипту.
- Ограничьте срок хранения: настройте отдельную задачу очистки или ротацию файлов, иначе лог разрастётся.
Пример логики скрипта (условный): получить Get-Process, добавить поле Timestamp с текущей датой, дописать через Export-Csv -Append.
На Linux: cron
Добавьте в crontab строку вида «*/15 * * * * команда записи снимка в файл с датой в имени». Имя файла удобно формировать так, чтобы в него входили дата и час — например, через подстановку результата команды date. Это упрощает поиск нужного интервала при разборе инцидента.
Частота сбора — компромисс. Слишком редко — пропустите короткий всплеск нагрузки; слишком часто — получите большие файлы и собственную нагрузку на диск. Для большинства задач интервал от одной до пятнадцати минут достаточен; точнее подбирается по характеру проблемы.
Сравнение способов
| Способ | Платформа | Формат | Когда подходит |
|---|---|---|---|
| Диспетчер задач (копирование) | Windows | Текст | Разовая ручная фиксация без подготовки |
| tasklist /v /fo csv | Windows | CSV | Быстрый снимок с возможностью открыть в Excel |
| Get-Process / Get-CimInstance + Export-Csv | Windows | CSV | Регулярный сбор, нужны путь и командная строка процесса |
| ps auxf | Linux | Текст | Один снимок с деревом процессов |
| top -b -n 1 | Linux | Текст | Снимок в привычном виде top, серия снимков при изменении -n |
| cron / планировщик + скрипт | Обе | Любой | Поиск эпизодических проблем, накопление истории |
Как анализировать сохранённые данные
Сам по себе файл — полуфабрикат. Польза появляется после разбора:
- Сортировка по ресурсам. В CSV отсортируйте по памяти или CPU — самые тяжёлые процессы видны сразу.
- Сравнение снимков. Откройте два файла рядом или объедините в одну таблицу с колонкой времени: появившиеся и исчезнувшие процессы часто указывают на причину проблемы.
- Поиск аномалий пути. Системные процессы обычно лежат в стандартных каталогах. Исполняемый файл системного имени процесса из пользовательской папки — повод разобраться детальнее.
- Группировка. Множество одноимённых процессов может быть нормой (браузер, пулы рабочих процессов) или признаком зациклившегося запуска — смотрите дерево родителей и время старта.
При подозрении на вредоносное ПО не удаляйте процесс самостоятельно на основании одного списка: сначала зафиксируйте данные (путь, командную строку, хеш файла), затем принимайте решение — возможно, с участием специалиста по безопасности.
Типичные ошибки
- Снимок без метки времени. Через неделю невозможно понять, к какому моменту относится файл. Всегда включайте дату и время — в имени файла или внутри данных.
- Неполный набор столбцов. Список имён без PID, пользователя и командной строки часто оказывается бесполезным: нельзя отличить экземпляры друг от друга.
- Кодировка. Кириллические имена пользователей и путей могут искажаться при неверной кодировке. В PowerShell указывайте UTF8 при экспорте.
- Отсутствие ротации. Задание в планировщике без очистки за месяц-другой забьёт диск, особенно если снимки делаются каждую минуту.
- Анализ одного снимка. Единственный файл показывает состояние, но не динамику. Если проблема плавающая, собирайте серию.
Практические рекомендации
Начните с простого: сделайте один снимок прямо сейчас удобной командой для вашей системы и посмотрите, хватает ли этих данных для ответа на ваш вопрос. Если задача разовая — этого достаточно. Если проблема повторяется — настройте сбор по расписанию с меткой времени и ротацией файлов, включив в выгрузку PID, пользователя, путь и командную строку. Перед разбором инцидента проверьте, что файлы читаются корректно (кодировка, разделители), и только потом делайте выводы: список процессов — сильный инструмент, но он отвечает лишь на вопрос «что выполнялось», а не «почему».
