Що таке процеси «вузол служби» () і чому їх так багато блог веб-програміста
Якщо ви коли-небудь переглядали Диспетчер завдань, можливо, ви задавалися питанням, чому так багато процесів «вузол служби» або «служба вузла». Ви не можете зупинити їх, і ви їх не запускали. Отже, що це?
Процеси «вузол служби» або Service Host служать в якості оболонки для завантаження сервісів з DLL-файлів. Служби організовані в пов'язані групи, і кожна група виконується всередині іншого примірника процесу «вузол служби». Таким чином, проблема в одному екземплярі не впливає на інші екземпляри. Цей процес є життєво важливою частиною Windows, яку ви не можете зупинити.
Отже, що таке процеси «вузол служби»?
Ось відповідь, згідно Microsoft:
Svchost.exe - це загальна назва процесів «вузол служби», які запускаються з бібліотек динамічного компонування.
Але це не дуже нам допомагає. Деякий час назад Microsoft почала міняти більшу частину функцій Windows, спираючись на внутрішні служби Windows (які запускалися з файлів EXE), замість цього тепер використовуються DLL-файли. З точки зору програмування це робить код більш багаторазовим і, його можливо, простіше підтримувати в актуальному стані. Проблема в тому, що ви не можете запускати DLL-файл безпосередньо з Windows так само, як і виконувані файли. Замість цього оболонка, що завантажується з виконуваного файлу, використовується для розміщення цих DLL-сервісів. Отже, з'явився процес «вузол служби» (svchost.exe).
Чому цих процесів так багато?
Якщо ви коли-небудь розглядали розділ «Служби» в панелі управління, ви, мабуть, помітили, що Windows вимагає багато служб. Якщо кожна окрема служба працює під одним вузлом, відмова однієї служби може призвести до збою всієї Windows. Замість цього вони відокремлені один від одного.
Служби організовані в логічні групи, які все пов'язані один з одним, а потім створюється один екземпляр вузла служби для розміщення кожної групи. Наприклад, один процес «вузол служби» запускає три служби, пов'язані з брандмауером. Інший процес може запускати всі служби, пов'язані з призначеним для користувача інтерфейсом, і так далі. На наведеному нижче зображенні, наприклад, ви можете бачити, що один процес запускає кілька пов'язаних мережевих сервісів, а інший запускає служби, пов'язані з віддаленими викликами процедур.
Що мені робити з усією цією інформацією?
Чесно, не так багато. За часів Windows XP (і попередніх версій), коли ПК мали набагато більш обмежені ресурси, а операційні системи були не зовсім точно налаштовані, часто не вдавалося використовувати Windows через непотрібних сервісів. В наші дні не рекомендується відключати служби. Сучасні ПК, як правило, завантажуються з пам'яттю і потужними процесорами. Додайте до цього той факт, що спосіб обробки Windows-сервісів в сучасних версіях (і в тому, які служби запускаються) був оптимізований, і усунення служб, які, на вашу думку, вам не потрібні, дійсно не робить великого впливу.
Проте, якщо ви помітили, що конкретний екземпляр «вузол служби» або пов'язана з ним служба викликає проблеми, такі як постійне надмірне використання процесора або пам'яті, ви можете перевірити конкретні програми, які задіяні. Це може принаймні дати вам уявлення про те, де почати пошук і усунення несправностей. Існує кілька способів дізнатися, які послуги розміщуються конкретним екземпляром «вузол служби». Ви можете перевірити роботу диспетчера задач або використовувати стороннє додаток Process Explorer.
Перевірка пов'язаних служб в диспетчері завдань
Якщо ви використовуєте Windows 8 або 10, процеси відображаються на вкладці «Процеси» диспетчера задач по їх повного імені. Якщо процес служить хостом для декількох служб, ви можете побачити ці служби, просто розширивши процес. Це дозволяє дуже легко визначити, які служби відносяться до кожного примірника процесу.
Якщо ви використовуєте Windows 7, все трохи по-іншому. Диспетчер завдань Windows 7 не групував процеси таким же чином і не відображав звичайні імена процесів - він показував тільки всі екземпляри «svchost.exe». Ви повинні були трохи покоматься, щоб визначити служби, пов'язані з будь-яким конкретним екземпляром «svchost.exe».
На вкладці «Процеси» диспетчера задач в Windows 7 клацніть правою кнопкою миші по певному процесу «svchost.exe», а потім виберіть «Перейти до сервісу».
Це відправить вас на вкладку «Служби», де будуть обрані всі служби, запущені під цим процесом «svchost.exe».
Потім ви можете побачити повне ім'я кожної служби в стовпці «Опис», щоб ви могли відключити цю службу, якщо ви не хочете її запускати або усунути неполадку, через яку вона створює вам проблеми.
Перевірка пов'язаних сервісів за допомогою Process Explorer
Microsoft також надає відмінний передовий інструмент для роботи з процесами в складі лінійки Sysinternals. Просто завантажте Process Explorer і запустіть його - це портативний додаток, тому немає необхідності його встановлювати. Process Explorer надає всілякі розширені функції - і я настійно рекомендую прочитати керівництво по користуванню Process Explorer, щоб дізнатися більше.
Для наших цілей Process Explorer групує пов'язані служби під кожним екземпляром «svchost.exe». Вони перераховані за іменами файлів, але їх повні імена також відображаються в стовпці «Опис». Ви також можете навести курсор миші на будь-який з процесів «svchost.exe», щоб побачити спливаюче вікно з усіма службами, що відносяться до цього процесу, - навіть тими, які в даний час не виконуються.
Чи може цей процес бути вірусом?
Сам процес є офіційним компонентом Windows. Хоча можливо, що вірус замінив реальний «вузол служби» власним виконуваним файлом, але це дуже малоймовірно. Якщо ви хочете бути впевненим, ви можете перевірити базове розташування файлу процесу. У диспетчері завдань клацніть правою кнопкою миші на будь-який процес хоста служб і виберіть опцію «Місцезнаходження опціонного файлу».
Якщо файл зберігається у вашій папці Windows \ System32, ви можете бути впевнені, що не маєте справу з вірусом.