Не запускается process monitor в windows vista. Как выявить причины медленной загрузки Windows с помощью Process Monitor. Как создать файл журнала для приложения

Для Андроид 27.02.2019
Для Андроид

Кто-то может быть уже читал и давно пользуется, а кто-то может быть даже и не слышал, поэтому хочу поведать вам о ней ещё раз, тем более что полтора года я не сидел сложа руки. Это автоматическая система слежения за торрент-трекерами, которая автоматизирует процесс скачивания торрент-файлов.


Самое главное для такой системы - это расширение количества поддерживаемых трекеров, не в угоду качеству, конечно же. За это время количество поддерживаемых трекеров увеличилось вдвое. На самом деле прикрутить поддержку очередного трекера дело нескольких часов, если только он не использует какой-то совсем уж заумный движок или слишком не удобен для парсинга (в основном это относится к именованию топиков раздач, к примеру добавить animereactor.ru не представилось возможным, ввиду отсутствия стандарта именования раздач). Теперь список поддерживаемых трекеров выглядит следующим образом:

  • anidub.com
  • baibako.tv
  • casstudio.tv
  • kinozal.tv
  • lostfilm.tv
  • newstudio.tv
  • nnm-club.me
  • novafilm.tv
  • rutor.org
  • rutracker.org
  • tfile.me
Трекеры между собой делятся на 2 типа:
- Форумные - те, у которых есть обновляемых раздачи
- Одиночные - те, на которых новые серии выкладывают по одной

Тут я немного подробнее расскажу о том, как это работает, потому что это является частым вопросом. Многие добавляют для мониторинга сериал на lostfilm.tv и ждут, что сразу что-то должно произойти, но это не так. Монитор среагирует на этот сериал только когда он появится в RSS ленте, а вот если добавить тему с rutracker.org, то torrrent-файл скачается сразу же после первого запуска системы, а в следующий раз, уже только когда будет перезалит torrrent-файл на трекере.

Формуные трекеры, имеют так же возможность следить и за релизерами


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

Вторым основным нововведением стала, наконец-то, поддержка торрент-клиентов, которая позволяет передавать torrent-файл непосредственно клиенту, который его качает, и при этом умеет удалять предыдущую раздачу из клиента (не важно какого типа раздача, «формуная» или «одиночная»). «Дружит» TM с Transmission и Deluge, т.к. это самые популярные клиенты среди моих пользователей и их просили «прикрутить». Это стало, пожалуй самым большим, расширением функционала за это время. Но, к сожалению, здесь есть ограничения - работает это только на *nix, т.к. работа строится через консоль этих клиентов.


Так же, в связи с блокировками некоторых трекеров у домашних провайдеров, очень сильно просили приделать возможность работы через proxy, что так же было реализовано и теперь систему можно завернуть в tor (его установить и сконфигурировать придётся, конечно же отдельно). А класс, работающий с БД, стал универсальным и поддерживает: MySQL, SQLite, PostgreSQL.

На удивление, ТМ стал достаточно популярен, я вижу, что его прикручивают не только на машины с Windows/Linux/Mac OS на которых он, естественно, нормально работает, но и на различные «коробочные» устройства на базе Linux`а: zyxel keenetic, различных NAS`ах, а так же на nas4free.

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

А вообще мне крайне интересно развивать проект дальше, мне будет крайне интересно поработать с программистами что бы улучшить систему или добавить в неё новый функционал, добавить для работы новые торрент-трекеры и узнать для себя ещё что то новое. По этому всех желающих я приглашаю на github .

Ну и самое главное, ссылка на последнюю версию 0.9.2 ну а как развернуть и проверить систему, описано в readme файле в архиве.

А тут я спрячу оставшиеся скриншоты:)







Системные требования:
PHP 5.3 и выше, должен быть собран с поддержкой cURL и PDO.
Так же, в php.ini (для CLI) необходимо изменить следующие параметры:
max_execution_time = 300
allow_url_fopen = on (эту опцию желательно включить в php.ini как для CLI, так и для веб-сервера)
выставить date.timezone

Разворачиваем:

  • скачиваем архив
  • импортируем дамп базы из директории db_schema в зависимости от используемой БД - *.sql
  • переносим все файлы в папку на вашем сервере (например /var/www/htdocs/torrentmonitor/)
  • правим config.php и указываем данные для доступа к БД
  • заходим в веб-интерфейс (пароль по умолчанию - torrentmonitor, смените(!) его после первого входа).
  • указываем учётные данные от трекеров
  • указываем в настройках путь для сохранения торрентов (папка, которая мониторится вашим торрент-клиентом), e-mail и включаем/отключаем отправку уведомлений
  • добавляем торренты для мониторинга
  • переходим на вкладку «тест» и проверяем - всё ли верно работает
  • добавляем в cron engine.php
*/10 * * * * php -q /path/to/folder/torrent_monitor/engine.php

И пара слов для параноиков: Пароли от ваших учёток хранятся у вас в БД, ко мне ничего не отправляется. Для собственного спокойствия вы можете закрыть любую активность на мой домен, кроме файла korphome.ru/torrent_monitor/version.xml, он нужен для проверки обновления (но хотя если вообще прям параноик, можно и обновления не проверять).

С удовольствием выслушаю ваши мысли на тему дальнейшего развития проекта и интересного функционала.

(ProcMon) от Sysinternals.

Недавно рассказывал одному юному падавану как пользоваться этим замечательным, а в некоторых случаях незаменимым инструментом. И пока рассказывал пришла в голову мысль написать такую вводную инструкцию для тех, кто только начинает свой тернистый путь админа.

Вообще, по моему мнению всё, что касается ProcMon лучше всего описано в книге от разработчиков, которая так и называется “Утилиты Sysinternals. Справочник администратора ”.

Я же не буду лезть в дебри, и постараюсь изложить с минимумом теории, и максимумом практики на конкретном примере.

Запуск ProcMon

Регистрирует активность файловой системы, реестра, сети, процессов, потоков, а также загрузку образов в реальном времени.

Ну как? Понятно? 🙂

Если просто запустить ProcMon рабочее окно программы моментально заполнился разными событиями, даже если вы ничего не делаете. Разобраться в этих событиях, и найти интересующие даже опытному мастеру очень сложно. Да и не нужно, но обо всём по порядку.

Чаще всего ProcMon запускается с конкретной целью, например, определить, что делает та, или иная программа, какой процесс пишет файлы в определённый каталог или ветвь реестра, куда девается место на диске, и т.д. Поэтому, если просто запусить ProcMon то придётся остановить сбор событий (Ctrl+E ), очистить уже собранные события (Ctrl+X ), настроить фильтры (Ctrl+L ), и снова запустить наблюдение. Для того, чтобы не делать столько лишний движений предусмотрен параметр командной строки /noconnect :

procmon /noconnect

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

Вообще для упрощения запуска, я делаю (и всем советую делать так) как описывается всё в той же книге:

Мой соавтор Аарон обычно создает папку C:\Program Files\Sysinternals и распаковывает в нее содержимое пакета Sysinternals Suite. Там утилиты невозможно изменить без прав администратора. Затем он добавляет этот каталог в системную переменную окружения Path, что позволяет легко запускать утилиты откуда угодно, в том числе через меню Start | Run (Пуск | Выполнить ).

Фильтры в ProcMon

Как было сказано выше окно фильтров открывается при запуске с параметром /noconnect . Если вы его нечаянно закрыли, или нужно подправить уже настроенные фильтры, открыть окно фильтров можно сочетанием клавиш Ctrl+L , или через меню Filter | Filter… .

Вот мы и добрались до практики 🙂

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

Итак, у нас открыто окно фильтров.

Фильтры в ProcMon

На всякий случай нажимаем кнопку сброса фильтров в состояние по умолчанию – Reset (по умолчанию в ProcMon настроено до фига фильтров, не рекомендуется их удалять) и добавляем фильтр

Process Name is notepad.exe include .

Нажимаем кнопку Add . Как можно понять из названия захватываться будут только события, связанные с процессом notepad.exe, т.е. те события, которые генерирует блокнот.

Важный момент: имя процесса должно быть указано полностью – с расширением, иначе ProcMon ничего не захватит. Как вариант можно использовать фильтр

Process Name begins with notepad include

В таком случае будут захвачены события, связанные с процессами, начинающимися на notepad, это может быть как стандартный блокнот, так и Notepad++ , или какой-нибудь ещё блокнот. Таким же образом добавляем фильтр на запись файлов:

Operation is WriteFile include

Нажимаем Add иOK (вообще можно просто нажать OK , в таком случае ProcMon скажет, что такого фильтра ещё нет, и спросит хотим-ли мы его добавить. Дело в том, что нажатие кнопки закрывает OK окно фильтров, если это не единственный фильтр, то лучше нажать кнопку Add , это позволит добавить фильтр, и оставить окно фильтров открытым для последующих фильтров).

Так как нас интересует только файловая активность, в главном окне ProcMon отключаем значки наблюдения за реестром, сетью и процессами – оставляем только наблюдение за файловой системой (выделены на скриншоте ниже).

Ещё один важный момент.

По умолчанию ProcMon регистрирует всю активность системы, даже те события, которые не попадают под фильтры, что в некоторых случаях может приводить к подтормаживанию работы. Если вы уверены в том, что фильтры настроены правильно (в данном примере мы уверены), и вам не нужны события, скрытые ими – их можно отбросить при помощи опции Filter | Drop Filtered Events (Удаление отфильтрованных событий) в меню Filter . Данный параметр действует только на регистрацию текущих событий, ранее записанные события из журнала не удаляются.

После того как фильтры настроены запускаем сбор событий (кнопка с изображением лупы, или Ctrl+E ). Запускаем блокнот, пишем какой-то текст и сохраняем файл. Смотрим, что получилось:

Файловая активность в ProcMon

Как видно из скриношота ProcMon зафиксировал событие записи файла процессом notepad.exe по пути C:\temp\test.txt .

Проведём ещё один эксперимент.

Остановим захват событий (Ctrl+E ), закроем блокнот и очистим собранные события (Ctrl+X ). Вызовем окно фильтов (Ctrl+L ), сбросим фильтры (кнопкой Reset ) и добавим следующий фильтр:

Path begins with c:\temp\

Этим самым мы указываем, что нас интересует любая активность по пути C:\temp . А так как значение указано не точно (не is , а begins with ), то захватываться будут события не только из этого каталога, но и из всех его подкаталогов.

Проверьте, чтобы было включено наблюдение только за файловой системой (при сбросе фильтров всё сбрасывается в состояние по умолчанию)

Фильтры в ProcMon

Запустим наблюдение. Откроем проводник и перейдём по нашему пути. Заглянем в ProcMon.

Так выглядит открытие каталога в ProcMon

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

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

Для того, чтобы увидеть сами события чтения файла, остановите сбор событий, очистите окно результатов, добавьте фильтр

Operation is ReadFile

и снова откройте файл.

Должно получиться, что-то вроде этого (как видно из скриншота я открывал файл двумя разными процессами):

Для диагностики причин медленной загрузки ОС Windows существует ряд довольно мощных утилит и методик анализа журналов событий, позволяющих выполнить детальную отладку всех этапов процесса загрузки системы и запуска служб (xperf/xbootmgr из Windows Performance Toolkit / Analyzer). Но их использование может вызвать ряд трудностей, особенно для начинающего системного администратора. В этой статье мы покажем, как с помощью Process Monitor можно довольно просто и быстро определить, какие программы, службы и драйвера долго выполняются при старте системы, увеличивая тем самым общее время загрузки для пользователя.

Безусловно, всем системным администраторам Windows, должна быть знакома утилита Process Monitor из комплекта системных утилит Sysinternals. Утилита Process Monitor позволяет в реальном времени отслеживать активность запущенных процессов, обращения к файловой системе и реестру. Одной из малоизвестной функцией Process Monitor является возможность включения режима мониторинга процессов запускаемых во время загрузки Windows.

Для диагностики этапа загрузки, Process Monitor создает отдельную службу в разделе реестра HKLM\SYSTEM\CurrentControlSet\Services. Данная служба загружает драйвер режима загрузки procmon23.sys , стартующий после запуска Winload.exe, который протоколирует активность всех, процессов выполняющихся во время запуска системы и входа пользователя.

  1. Скачайте и распакуйте архив с Process Monitor (http://download.sysinternals.com/files/ProcessMonitor.zip)
  2. Запустите с правами администратора файл procmon.exe
  3. В меню Options выберите пункт Enable Boot Logging
  4. В появившемся окне выберите опцию . В этом режиме драйвер procmon будет перехватывать состояние всех процессов каждую секунду
  5. Перезагрузите компьютер и дождитесь появления рабочего стола
  6. Драйвер procmon23.sys будет записывать все события до тех пор, пока пользователь не запустит утилиту Process Monitor . После этого режим протоколирования загрузки отключается.
  7. В окне Process Monitor соглашаемся с предложение сохранить собранные данные в файл.

    Примечание . Если не остановить работу Process Monitor, то временный файл журнала %windir%\procmon.pmb со временем займет все свободное место на системном диске.

  8. Выберите каталог, в котором нужно сохранить файл и дождётесь его сохранения. В моем случае в целевом каталоге появилось три файла Bootlog .pml, Bootlog-1.pml и Bootlog-2.pml общим размером 700 Мб.
  9. Щелкните по заголовку таблицы в окне ProcMon, выберите Select Columns и включите отображение столбца Duration
  10. Создадим новый фильтр в меню Filter .
  11. В качестве параметра фильтрации укажем Duration , условие more than и значение 10. Нажмите кнопку Add и ОК.
  12. Таким образом, в списке процессов окажутся только те процессы, у которых на выполнение некоторых операций ушло больше 10 секунд (10 секунд я выбрал для большей наглядности примера).
  13. Также для анализа процесса загрузки можно воспользоваться функцией в меню Tools ->Process Tree , позволяющей отобразить все процессы в виде графического дерева с информацией о начале, завершении и длительности процесса.

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

Как правило, этот анализ поможет выявить «тормозящие» процессы, засевший в системе троян (в первую очередь нужно анализировать дочерние процессы Winlogon.exe), принять решение о необходимости удалить/обновить проблемное ПО или драйвер устройства, отключить некоторые службы или изменить тип их запуска (отложенный запуск или ручной по запросу), убрать программы из . Чаще всего в этом списке оказываются антивирусы и другое «тяжелое» ПО.

Многих интересует вопрос «Как узнать, что делает программа при установке, запуске, закрытии, работе? Как следить за программой?» Ответ: с помощью другой программы, которая называется Process Monitor.

Process Monitor - программа для Windows, которая в режиме реального времени показывает куда записываются или откуда удаляются файлы, какие файлы читаются той или иной программой, какие действия программа делает с реестром, как и когда отслеживаемая программа использует сеть (интернет), а также следит за процессами и потоками. Программа оснащена мощным фильтром для отслеживания нужных процессов или событий. Process Monitor является главным инструментом для устранения неисправностей системы и избавления от вредоносных программ (вирусов).

А теперь рассмотрим подробнее как работать с программой, и разберем ее ключевые функции. Для более подробного ознакомления с программой смотри колонку «видео» справа, так как для полного описание программы потребуется написать книгу).

Так выглядит главное окно программы при запуске Process Monitor. Сразу после запуска начинается запись процессов Windows это обращение и создание файлов, обращение к реестру, сети и т.д.

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

На основной панели программы:

Размещены ее основные функции. Самая правая группа значков

Это значки предварительной (грубой) фильтрации. Слева направо: показывать обращения к реестру, к файловой системе, к сети (интернету), показывать процессы и потоки, профилирование для каждого процесса. Соответственно если выбрать одну иконку, например, обращение к реестру, то и будет показываться только обращение к реестру, если две, то две и т.д. Замечу что даже если вы какие то иконки не выбираете, то запись ее все равно продолжается и если вы ее включите, то будут показаны события до ее включения.

Следующие два пункта это поиск и переход:

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

Следующая группа меню фильтры

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

Следующая группа меню отвечает за отображение событий в главном окне

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

Последние два меню, думаю сильно объяснять не надо это сохранение или загрузка прослеженных процессов

А теперь разберем работу программы на примере. Допустим, мы хотим узнать, что делает какое-то приложение у нас в компьютере. Пусть это приложение у нас будет блокнот. В процессах мы заранее знаем, что он называется как notepad. exe. Запускаем Process Monitor, нажимаем кнопку «Filter» (Ctrl+L) и видим следующее окно:

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

Создадим свой фильтр, который будет показывать только процесс notepad. exe. Для этого нажимаем первую стрелочку вниз, где по умолчанию написано “Architecture” и из предложенного списка выбираем “Process Name” Рис.1. Далее из второго списка выбираем пункт “is”, который стоит по умолчанию Рис.2. В следующем меню мы можем выбрать процесс из уже запущенных или добавить его самим, написав в поле “notepad.exe”т.к. блокнот нами еще не запущен Напишем его сами Рис.3. Последний пункт это то как позиционировать этот процесс “Include” оставить только его, а “Exclude” исключить его из общего потока. Выбираем “Include” Рис.4. Нажимаем ниже кнопочку “Add” добавить фильтр.

В итоге у нас должно получиться следующее:

Нажимаем внизу “Apply” “Ok” и мы видим, что список в программе стал чистым это, потому что мы включили фильтр процесс, который еще не запущен и добавили условие игнорировать все кроме этого процесса.

Запускаем блокнот и видим следующее:

Первой строчкой видим запуск процесса с PID и Parent PID, потом создается поток, загружаются графические файлы, создается файл в папке C:WindowsPrefetch и с именем NOTEPAD.EXE-D8414F97.pf. Можем сразу перейти в эту папку для этого достаточно выделить строчку в данном случаи пятая и нажать на главной панели зеленую стрелочку, и сразу отроется папка, в которой создан этот файл. Далее идет подгрузка различных системных библиотек, чтение настроек из реестра как системных таки и пользовательских и много еще чего.

На главном меню есть еще один значок, о котором не говорилось раньше это:

Это иконка дерева процессов. Если ее нажать то увидем следующее окно:

По этому дереву видно, какая программа, какой процесс запускала, папка, откуда запускалась, сколько жил процесс и много-много разной информации.

На этом все, как я уже говорил все показать потребуется написание целой книги, поэтому смотрите видео, которые расположены справа там больше рассказывается да еще и показывается).

П ри снижении скорости загрузки Windows традиционно рекомендуется выполнить очистку системы от временных файлов и отключить с помощью программ-оптимизаторов неиспользуемые службы, однако все эти способы далеко не всегда оказываются результативными. Как показывает практика, удаление временных данных и очистка реестра совершенно бесполезны, использование же оптимизаторов также не оказывает должного эффекта, так как заложенные в них алгоритмы действуют по шаблону, нередко отключая совсем не те компоненты, которые следовало бы отключить.


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

Утилита многофункциональная, но в данном примере нас интересует одна функция - мониторинг запускаемых во время загрузки Windows процессов. Работает она следующим образом: в ключе реестра HKLM\SYSTEM\CurrentControlSet\Services создается специальная служба, загружающая драйвер procmon23.sys , который отслеживает запуск всех процессов, стартующих после запуска основного файла загрузки Winload.exe . Данные записываются в лог и выводятся в окне утилиты в графическом виде, позволяя легко определить, загрузка какого компонента занимает больше всего времени.

Итак, скачиваем с сайта разработчика technet.microsoft.com/en-us/sysinternals/processmonitor.aspx и запускаем от имени администратора. В главном меню выберите -> Enable Boot Logging.

В открывшемся окошке отметьте галочкой Generate thread profiling events с включенной радиокнопкой Every second .

Нажмите «OK» и перезагрузите компьютер . Когда появится рабочий стол, запустите повторно. Откроется окошко с уведомлением «A log of boot-time activity was created…» . Нажмите «OK» и сохраните файл PML в любое удобное вам расположение.

П римечание: протоколирование событий драйвером procmon23.sys запустится сразу после перезагрузки системы и будет продолжаться в фоновом режиме до тех пор, пока пользователь не запустит утилиту . Если утилиту не запустить, временный файл дампа procmon.pmb в каталоге *C:\Windows* заполнит все свободное пространство на диске.

В нашем примере было создано два файла дампа Bootlog .pml и Bootlog-1.pml общим размером 464 Мб . Перед тем, как приступить к их анализу, кликните в окне по заголовку таблицы данных правой кнопкой мыши, нажмите

И отметьте в открывшемся окошке пункт (столбец) .

И установите в окне создания фильтра параметры Duration, more than и 10 , как показано на скриншоте.

10 в данном примере это количество секунд, затраченных процессами на выполнении своих операций.

Теперь нажмите сначала «Add» , потом «OK» , и в результате в окне утилиты окажутся процессы, на загрузку которых было затрачено больше всего времени.

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

Выявив таким образом проблемные процессы и сопоставив их с исполняемыми файлами и службами, вы можете выполнить корректную оптимизацию системы, убрав последние из автозагрузки.



Рекомендуем почитать

Наверх