Windows запустить программу как службу

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

В настоящее время я нацелен на создание Python и Django как технологий для реализации этого сервиса. Я почти уверен, что я понимаю, как демонизировать программу Python в Linux. Тем не менее, это необязательный элемент спецификации, который система должна поддерживать Windows. У меня мало опыта программирования Windows, и у меня нет опыта работы с службами Windows.

Можно ли запускать программы Python в качестве службы Windows (т.е. запускать ее автоматически без входа пользователя)? Я не обязательно буду реализовывать эту часть, но мне нужно понять, как это будет сделано для того, чтобы решить, следует ли разрабатывать эти строки. Изменить: Спасибо за все ответы до сих пор, они довольно полные.

Включение службы очереди печати в ОС Windows

Я хотел бы узнать еще одно: Как Windows знает о моем сервисе? Могу ли я управлять им с помощью родных утилит Windows? Что эквивалентно помещению start/stop script в/etc/init.d?

Hanno Fietz 28 авг. 2008, в 13:30
Поделиться
Проверьте этот шаблон службы Windows, он использует win32service API .
CMS 28 фев. 2009, в 05:52

Поделиться:
cross-platform

7 ответов

Лучший ответ

Да, вы можете. Я использую библиотеки pythoncom, входящие в состав ActivePython или могут быть установлены с pywin32 (расширения для Python для Windows).

Это базовый скелет для простой службы:

import win32serviceutil import win32service import win32event import servicemanager import socket class AppServerSvc (win32serviceutil.ServiceFramework): _svc_name_ = «TestService» _svc_display_name_ = «Test Service» def __init__(self,args): win32serviceutil.ServiceFramework.__init__(self,args) self.hWaitStop = win32event.CreateEvent(None,0,0,None) socket.setdefaulttimeout(60) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_,»)) self.main() def main(self): pass if __name__ == ‘__main__’: win32serviceutil.HandleCommandLine(AppServerSvc)

Ваш код будет идти в методе main() — обычно с каким-то бесконечным циклом, который может быть прерван проверкой флага, который вы установили в методе SvcStop

Ricardo Reyes 28 авг. 2008, в 15:58
Поделиться
После кодирования, как я могу сказать Windows, чтобы запустить это как службу?
Kit 19 сен. 2010, в 23:44
Ricardo Reyes 22 сен.

2010, в 12:29
python my_script_as_service.py install ?
Kit 22 сен. 2010, в 17:12

Скрипт отсутствует «импорта сокета» в верхней части. Вы также можете добавить « svc_description », чтобы изменить описание сервиса. Спасибо, это спасло меня от охоты!

Как Исправить Ошибку Не Удалось Запустить Службу Центра Обеспечения Безопасности

David Newcomb 13 янв. 2011, в 18:05

Вы особо упоминаете pythoncom и импортируете его в свой пример кода. Проблема в том, что вы никогда не используете pythoncom где-либо в своем примере кода, вы только импортируете его. Зачем упоминать об этом, а потом не показывать его использование?

Buttons840 12 апр. 2011, в 17:56

Почему для socket.setdefaulttimeout(60) есть? Нужно ли это для какой-либо службы или просто случайно скопировано из какой-либо существующей службы? 🙂

Timur 10 сен. 2011, в 12:42

Можете ли вы объяснить, что вы подразумеваете под «проверкой флага», чтобы остановить службу? Как ты это делаешь?

ewok 28 окт. 2011, в 14:30
javawizard 24 июль 2012, в 01:36
ThatAintWorking 10 авг. 2013, в 22:28

Это выглядит великолепно, я заменил пустой основной цикл с записью в файл некоторого текста. Файл создан, но остается пустым, есть идеи, почему? Более того, когда я запускаю службу, я получаю Starting service TestService , а если я делаю следующее, я делаю остановку службы, я получаю Службу остановки при Error stopping service: The service has not been started. (1062) , что не так?

e271p314 02 дек. 2013, в 12:42
n611x007 09 июль 2014, в 09:00

Удаление службы, похоже, не работает для меня. Служба всегда заканчивается в состоянии STOP_PENDING или подобном и никогда не завершает работу, пока я не убью его с помощью sc queryex

mknaf 28 июль 2014, в 14:00
chrisumbel.com/article/windows_services_in_python Это похожий пример, но более полный
csprabala 27 май 2015, в 15:55
Kounavi 02 окт. 2015, в 03:14
AdrianBoeh 29 дек. 2015, в 22:11

Mahdi 24 март 2017, в 22:21

Я использовал этот код как есть и смог установить службу с помощью python test_service.py install но когда я пытаюсь запустить службу, используя python test_service.py start или NET START TestService она возвращает сообщение «Служба не отвечает на функция управления », нужно ли что-то реализовывать в методе SvcDoRun ?

Some Guy 04 май 2017, в 14:57
576i 09 окт. 2017, в 20:03
Thomas Ahle 28 нояб. 2017, в 16:03

pywintypes.error: (1053, ‘StartService’, ‘Служба не ответила на запрос запуска или управления во время своевременного обращения.’)

alireza 18 март 2018, в 07:27
Это не работает для Python 3.7
pajarnas 19 март 2019, в 19:03
Показать ещё 19 комментариев

Хотя я выделил выбранный ответ пару недель назад, тем временем я больше боролся с этой темой. Похоже, что у вас есть специальная установка на Python и использование специальных модулей для запуска script, поскольку сервис — это просто неправильный путь. Как насчет переносимости и т.д.

Я наткнулся на замечательный Non-sucking Service Manager, который сделал его очень простым и разумным для работы с Windows Services. Я понял, что, поскольку я мог передавать параметры установленному сервису, я мог бы просто выбрать исполняемый файл Python и передать мой script в качестве опции.

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

mknaf 28 июль 2014, в 15:09
Поделиться

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

Jaran 17 авг. 2014, в 12:25

Да, это работает, и это очень легко сделать. Вы просто даете путь и аргументы для сценария. Я смог заставить мой работать без консоли на тот случай, если кто-то каким-нибудь образом получит окно консоли.

kmcguire 09 сен. 2014, в 13:44

Хотя это, очевидно, работает, есть и другие трудности, особенно когда вам «не нужно использовать весь стек Apache»: например, gunicorn еще не работает в Windows, что на самом деле было для меня показателем.

mknaf 09 сен. 2014, в 19:15

Хитрость заключается в том, чтобы запустить python.exe как сервис и ваш скрипт на python в качестве параметра: например, «nssm install MyServiceName c: python27 python.exe c: temp myscript.py»

poleguy 23 нояб. 2015, в 23:22

Работает отлично! В системе с несколькими виртуальными средами путь может ссылаться на исполняемый файл интерпретатора Python в каталоге Scripts требуемой виртуальной среды. Кажется, что new-service в PowerShell должен быть в состоянии сделать это, но запуск (и мониторинг) скрипта как сервиса, очевидно, включает в себя гораздо больше деталей, о которых nssm очень хорошо заботится.

Fred Schleifer 22 дек. 2015, в 07:23
Показать ещё 3 комментария

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

Способ 1: Использовать instrrv и srvany из rktools.exe

Для Windows Home Server или Windows Server 2003 (также работает с WinXP), Windows Server 2003 Resource Kit Tools поставляется с утилит, которые могут для этого используется тандема, называемая instsrv.exe и srvany.exe. Подробнее о том, как использовать эти утилиты, см. В статье Microsoft KB KB137890.

Читайте также:
Не открываются приложения и программы на Windows

Для Windows Home Server существует большая удобная оболочка для этих утилит с меткой «» Любой установщик услуг».

Способ 2. Использовать ServiceInstaller для Windows NT

Существует другая альтернатива, использующая ServiceInstaller для Windows NT ( скачать можно здесь) с доступные инструкции python. В отличие от имени, он работает как с Windows 2000, так и с Windows XP. Ниже приведены некоторые инструкции по установке python script в качестве службы.

Установка Python script

Запустите ServiceInstaller, чтобы создать новый оказание услуг. (В этом примере это предположил, что python установлен на C:Python25)

Service Name : PythonTest Display Name : PythonTest Startup : Manual (or whatever you like) Dependencies : (Leave blank or fill to fit your needs) Executable : c:python25python.exe Arguments : c:path_to_your_python_scripttest.py Working Directory : c:path_to_your_python_script

После установки откройте Control Апплет Panel Services, выберите и запустите службу PythonTest.

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

n611x007 09 июль 2014, в 08:30
Показать ещё 2 комментария

Самый простой способ добиться этого — использовать собственную команду sc.exe:

sc create PythonApp binPath= «C:Python34Python.exe —C:tmppythonscript.py»

  1. https://technet.microsoft.com/en-us/library/cc990289(v=ws.11).aspx
  2. создание сервиса с помощью sc.exe;как передать параметры контекста

pyOwner 07 дек. 2016, в 13:56
Поделиться

Самый простой способ — использовать: NSSM — диспетчер служб несвязывания:

2 — установить программу python в качестве службы: Win prompt as admin

c:> nssm.exe установить WinService

3 — На консоли NSSM:

Каталог автозагрузки: C:Python27

4 — проверить созданные службы на services.msc

Adriano R P L 27 сен. 2017, в 15:53
Поделиться

Пошаговое объяснение, как заставить его работать:

1- Сначала создайте файл python в соответствии с основным скелетом, упомянутым выше. И сохраните его на пути, например: «c:PythonFilesAppServerSvc.py»

import win32serviceutil import win32service import win32event import servicemanager import socket class AppServerSvc (win32serviceutil.ServiceFramework): _svc_name_ = «TestService» _svc_display_name_ = «Test Service» def __init__(self,args): win32serviceutil.ServiceFramework.__init__(self,args) self.hWaitStop = win32event.CreateEvent(None,0,0,None) socket.setdefaulttimeout(60) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE, servicemanager.PYS_SERVICE_STARTED, (self._svc_name_,»)) self.main() def main(self): # Your business logic or call to any class should be here # this time it creates a text.txt and writes Test Service in a daily manner f = open(‘C:\test.txt’, ‘a’) rc = None while rc != win32event.WAIT_OBJECT_0: f.write(‘Test Service n’) f.flush() # block for 24*60*60 seconds and wait for a stop event # it is used for a one-day loop rc = win32event.WaitForSingleObject(self.hWaitStop, 24 * 60 * 60 * 1000) f.write(‘shut down n’) f.close() if __name__ == ‘__main__’: win32serviceutil.HandleCommandLine(AppServerSvc)

2 — На этом этапе мы должны зарегистрировать наш сервис.

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

sc создать TestService binpath = «C:Python36Python.exe c:PythonFilesAppServerSvc.py» DisplayName = «TestService» start = auto

первым аргументом binpath является путь файла python.exe

Второй аргумент binpath — это путь к вашему файлу python, который мы уже создали

Не пропустите, что вы должны поместить одно место после каждого знака < =.

Тогда, если все в порядке, вы должны увидеть

Теперь ваша служба python установлена ​​как служба Windows. Вы можете увидеть его в Service Manager и в реестре по адресу:

3- Хорошо. Вы можете начать свою службу в сервис-менеджере.

Вы можете выполнить каждый файл python, который предоставляет этот сервисный скелет.

Источник: overcoder.net

Как запустить любую программу в качестве справочной службы в Windows

Как запустить любую программу в качестве справочной службы в Windows

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

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

Прекрасным примером этого является приложение Plex, мультимедийное серверное приложение, которое может передавать локальный контент практически любому устройству. Конечно, вы можете позволить ему сидеть в системном лотке, как обычная программа, но что, если компьютер перезапустится из-за сбоя питания или запланированных обновлений? Пока вы не войдете в систему на ПК, Plex не будет доступен. Это раздражает, если вам нужно бежать в другую комнату, чтобы запустить Plex, пока ваш попкорн простудится, и супер раздражает, если вы уезжаете из города и пытаетесь передать свои медиа через Интернет. Настройка Plex как службы решит эту проблему.

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

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

Готовы к качке? Давайте поговорим о том, как настроить его.

Шаг первый: установите SrvStart

Чтобы запустить приложение как услугу, вам понадобится небольшая сторонняя утилита. Есть несколько, но наш любимый — SrvStart. Он был первоначально разработан для Windows NT и будет работать практически с любой версией Windows из Windows XP.

Чтобы начать работу, перейдите на страницу загрузки SrvStart и возьмите утилиту. Загрузка содержит всего четыре файла (две библиотеки DLL и два EXE-файла). Установщика нет; вместо этого скопируйте их на компьютер

переместите их в свою основную папку Windows, чтобы установить «SrvStart».

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

Шаг второй: создайте файл конфигурации для новой службы

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

, в котором указывается программа запуска, и

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

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

команда просто указывает путь, в котором находится исполняемый файл. Для

команды, мы используем

параметр, который заставляет SrvStart отправлять сообщение закрытия Windows на все окна, открытые службой.

[Plex] startup=’C:Program Files (x86)PlexPlex Media ServerPlex Media Server.exe’ shutdown_method=winmessage

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

Сохраните новый файл конфигурации везде, где хотите, и замените расширение.txt расширением.ini. Обратите внимание на имя файла, так как оно нам понадобится на следующем шаге. Для удобства ввода в командной строке мы рекомендуем временно сохранить этот файл прямо на вашем диске C:.

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

Следующим шагом будет использование команды Service Controller (SC) Windows для создания новой службы на основе критериев в вашем файле конфигурации. Откройте командную строку, щелкнув правой кнопкой мыши меню «Пуск» (или нажав «Windows + X»), выбрав «Командная строка (Admin)», а затем нажмите «Да», чтобы разрешить запуск с правами администратора.

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

SC CREATE Displayname= ‘ ‘ binpath= ‘srvstart.exe -c

В этой команде есть несколько замечаний. Во-первых, каждый знак равенства (=) имеет после него пробел. Это необходимо. Так же

ценность полностью зависит от вас. И, наконец, для

ценность, вы захотите использовать

так что служба автоматически запускается с Windows.

Поэтому в нашем примере Plex команда будет выглядеть так:

SC CREATE Plex Displayname= ‘Plex’ binpath= ‘srvstart.exe Plex -c C:PlexService.ini’ start= auto

Да, вы читали это право: я использовал

, Команда требует удаления косой черты.

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

Читайте также:
Программа для удаления файлов которые не удаляются Windows

С этого момента ваша новая служба будет запускаться всякий раз, когда начнется Windows. Если вы откроете интерфейс служб Windows (просто нажмите «Пуск» и введите «Услуги»), вы можете найти и настроить новую услугу так же, как и любой другой. И это все, что нужно. Если у вас есть приложения, которые начинаются с Windows, и вы предпочитаете, чтобы они запускались без необходимости входа в систему, достаточно легко превратить любое приложение в службу. Мы только коснулись основного метода создания и запуска новой службы, но с помощью SrvStart вы можете многое сделать, чтобы точно настроить, как работает служба. Обязательно ознакомьтесь с документацией, если хотите узнать больше.

Популярная тема

Новичок: как запустить любую программу в Windows с помощью Hotkey

Новичок: как запустить любую программу в Windows с помощью Hotkey

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

Простой доступ: добавьте любую программу из строки состояния Firefox

Простой доступ: добавьте любую программу из строки состояния Firefox

Загрузите и добавьте дополнение Easy Access в Firefox для получения легкого доступа к вашим любимым системным командам и программам из строки состояния вашего браузера.

Folder2MyPC: добавьте любую папку или программу в компьютер или панель управления

Folder2MyPC: добавьте любую папку или программу в компьютер или панель управления

Folder2MyPC — это бесплатная загрузка, которая позволит вам добавить любую папку или программу в папку «Мой компьютер» или «Панель управления» в Windows 7.

Окна справки автоматически открываются, когда я запускаю любую программу

Окна справки автоматически открываются, когда я запускаю любую программу

Если Windows Help and Support автоматически запускается в Windows 8/7, когда вы открываете Explorer.exe или в любой программе, выключите Sticky Keys или Filter Keys.

Office EULA открывается каждый раз, когда я открываю любую программу Office

Office EULA открывается каждый раз, когда я открываю любую программу Office

Остановите соглашение Microsoft Office от появления каждого раза, когда я его использую. Используйте этот трюк реестра, если лицензия Office 2013/16 EULA открывается каждый раз в Windows 8/10.

Источник: ru.begin-it.com

Реализация запуска приложения в качестве службы Windows

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

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

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

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

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

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

Запускать приложение в качестве службы мы будем с помощью программы NSSM (Non-Sucking Service Manager). NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 10.

Изучение предметной области

Microsoft Windows (англ. windows — окна) — семейство операционных систем корпорации Майкрософт (Microsoft), ориентированных на применение графического интерфейса при управлении. Изначально были представлены многофункциональными надстройками для MS-DOS.

Операционная система Windows обеспечивает значительные удобства для программистов и пользователей [2]. Большинство поль­зователей компьютеров используют Windows в своей работе. Ши­рочайшее распространение ОС Microsoft Windows сделало ее фак­тическим стандартом для компьютеров класса IBM.

К концу 2017 года Windows 10 не смогла опередить Windows 7 и стать самой популярной компьютерной операционной системой в мире. Об этом свидетельствуют данные сервиса NetMarketShare, который берет в рассмотрение данные 160 млн уникальных пользователей, просматривающих более 40 тыс. веб-ресурсов по всему миру.

По итогам декабря 2018 года Windows 10 оказалась установлена почти на 45% десктопов и ноутбуков в глобальном масштабе против 23% годом ранее. Доля Windows 7 хотя и сократилась за год — с 47,7% до 43,1%, но все равно осталась выше, чем у более свежей платформы [7].

В ОС Windows гораздо лучше, чем в других операционных си­стемах:

— налажено взаимодействие между пользователем и компью­тером;

— большинство повседневных задач выполняются с меньшими, чем когда-либо, затратами времени;

— решена значительная часть проблем с распределением памя­ти;

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

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

— поддержка в Windows стандарта «plug-and-play» упрощает модернизацию оборудования;

— система ярлыков помогает быстро обращаться к часто исполь­зуемым файлам, программам и папкам;

Большая часть всего этого доступна без ущерба для производи­тельности ПК. А многие процессы, например печати, идут теперь гораздо быстрее благодаря 32-битному режиму и другим усовер­шенствованиям.

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

Одними из основных целей разработчиков Windows являются:

— создание документированного интерфейса;

— резкое снижение требований к подготовке пользователя;

— упрощение работы на компьютере.

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

Понятие операционной системы

Операционная система — комплекс управляющих и обрабатывающих программ. ОС принимает на себя сигналы-команды, которые посылают другие программы, и «переводит» их на понятный машине язык. ОС управляет всеми подключенными к компьютеру устройствами, обеспечи­вая доступ к ним другим программам. Наконец, третья задача операционной системы — обеспечить удобство работы с компьютером для челове­ка-пользователя

Получается, что каждая ОС состоит как минимум из трех обязательных частей [1].

— Первая — ядро, командный интерпретатор, «переводчик» с программного языка на «железный», язык машинных ко­дов.

— Вторая — специализированные программы для управле­ния различными устройствами, входящими в состав компь­ютера. Такие программы называются драйверами, — то есть управляющими. Сюда же относятся так называемые «системные библиотеки», используемые как самой операционной системой, так и входящими в ее сос­тав программами.

— И, наконец, третья часть — удобная оболочка, с которой об­щается пользователь — интерфейс. Своего рода красивая обертка, в которую упаковано скучное и не интересное для пользователя ядро.

Сегодня графический интерфейс — неизменный атрибут любой операционной системы, будь то Windows, Linux или MacOS. Но операционные системы первых поколений имели не графический, а текстовый интерфейс, то есть команды компьютеру отдавались не щелчком мышки по рисунку-пик­тограмме, а с помощью введения команд с клавиатуры. Напри­мер, сегодня для запуска программы редактирования текстов Microsoft Word достаточно щелкнуть по значку этой програм­мы на Рабочем столе Windows.

Операционные системы делятся на однозадачные и многоза­дачные. Однозадачные операционные сис­темы (DOS) могут выполнять в одно и то же время не более одной задачи, а многозадачные ОС (Windows 98/ME/. ) спо­собны одновременно управляться с несколькими процессами, деля между ними мощность компьютера. В принципе, число задач, которое может выполнять ваша ОС, не ограничено ни­чем, кроме мощности процессора и емкости оперативной па­мяти.

Еще один критерий — число пользователей ОС.

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

Однопользовательские операционные системы в отличие от многопользовательских операционных систем могут использоваться только одним пользователем одновременно. Возможность создания несколько пользователей в операционной системе Windows, не делает ее многопользовательской системой. Скорее, только администратор сети является реальным пользователем. Но для Unixи подобных операционных систем, есть возможность сразу двум пользователям войти в систему в одно время, и эта возможность ОС делает ее многопользовательской операционной системой.

Windows 95, Windows2000, MaxOS и Palm OS являются примерами однопользовательских операционных систем. Unix и OpenVMS примеры многопользовательских операционных систем.

Операционная система Windows

Операционная система — это главная программа компьютера. Без нее мы не смогли бы даже включить компьютер. Windows — это операционная система.

Когда мы включаем компьютер, то видим картинку и всякие значки, кнопки, окошки и прочее. Это и есть операционная система [3].

Читайте также:
Какие программы в Виндовс 8

Операционных систем не так много. Практически на всех компьютерах установлена Windows, потому что она наиболее простая и удобная. Есть несколько версий этой системы — 95, 98, 2000, Me, NT, XP, Vista, Windows 7, Windows 8, Windows 10. Между собой они отличаются датой выпуска. Чем старее версия операционной системы, тем больше в ней недоработок.

На данный момент самой новой версией является Windows 10.

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

Windows 10 доступна для обновления пользователям Windows 7 и 8, и установлена на компьютерах и планшетах. Сама операционная система и приложения для неё будут всё время обновляться на протяжение её жизненного цикла — который пока установлен на 10 лет.

Microsoft представляет Windows 10 как последнюю версию Windows в истории. Поэтому обновление до неё с Windows 7 и 8.1 в первый год после выпуска будет бесплатным.

Меню «Пуск», которое сочетает в себе черты Windows 7 и 8 с целью дать максимальное удобство работы. Цифровым ассистентом Cortana, предоставляющим нужную пользователю информацию. Новым набором напоминаний и обновлений, заглядывающих на экран и снова исчезающих (их можно прочитать позже в центре уведомлений). Новыми приложениями вроде Фотографии, которые знакомят нас с тем, как выглядят универсальные приложения. Режимом, который позволяет создавать виртуальные рабочие столы, упорядочивая открытые приложения по категориям и многим другим.

Управление службами

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

Для управления службами служит оснастка mmc «Службы». Чтобы ее найти, воспользуйтесь поиском по слову Службы в меню Пуск или на Панели управления. Другой способ запуска оснастки управления службами – ввести команду services. msc в строке поиска меню Пуск.

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

Окно свойств службы содержит несколько вкладок. На вкладке Общие вы можете узнать основные сведения о выбранной службе: имя, описание, исполняемый файл службы и ее текущее состояние. Для изменения состояния службы предназначены кнопки Запустить, Остановить, Приостановить и Продолжить.

Для управления службами в Windows существует графическая утилита — службы (services.msc), для ее запуска необходимо перейти:

Панель управления (Control Panel) —> Администрирование (Administrative Tools) —> Службы (Services) или в строке поиска меню Пуск (Start) ввести services.msc.

Из этой консоли можно просматривать, запускать, останавливать, изменять параметры и тип запуска служб.

Различные варианты запуска служб.

1) Автоматически (отложенный запуск) — служба будет запущена спустя некоторое время после старта операционной системы, используется для служб, ненужных при загрузке операционной системы, позволяет оптимизировать процесс загрузки.

2) Автоматически — служба будет запущена при старте операционной системы.

3) Вручную — служба запускается пользователем, приложениями или другими службами.

4) Отключена – службу нельзя запустить.

Примечание: Существует еще один вариант (обязательная служба) — автоматически запускается и пользователь не может остановить эту службу).

Службами window можно управлять не только используя графическую утилиту, но и из командной строки windows cmd. Для запуска переходим в пункт меню: Пуск —> Выполнить —> В строку вводим команду cmd.exe. Ниже приведу команды для управления службами [5].

sc stop [имя_службы]

sc start [имя_службы]

sc delete [имя_службы]

· Запрос данных конфигурации для службы:

sc qc [имя_службы]

· Просмотр всех служб:

Особенностью служб является то, что они запускаются от имени пользователя LocalSystem — обладающего полными правами в системе.

Список всех служб расположен в ветке реестра:

Реализация запуска приложения в качестве службы Windows

В большинстве случаев службам запрещено взаимодействие с консолью или рабочим столом пользователей (как локальных, так и удалённых), однако для некоторых сервисов возможно исключение — взаимодействие с консолью (сессией с номером 0, в которой зарегистрирован пользователь локально или при запуске службы mstsc с ключом/console).
Существует четыре режима для сервисов:
* запрещён к запуску;
* ручной запуск (по запросу);
* автоматический запуск при загрузке компьютера;
* обязательный сервис (автоматический запуск и невозможность (для пользователя) остановить сервис).
Windows предлагает программу Service Control Manager, с её помощью можно управлять созданием, удалением, запуском и остановкой служб. Приложение, имеющее статус сервиса, должно быть написано таким образом, чтобы оно могло принимать сообщения от Service Control Manager. Затем, одним или несколькими вызовами API, имя службы и другие атрибуты, такие, как его описание, регистрируются в Service Control Manager.

Создание службы Windows

Запуск приложения блокнот Windows в качестве службы на Windows 8.1. осуществим с помощью программы NSSM.

Для создания службы с именем notepad необходимо запустить командную консоль (строку), перейти в папку с распакованным NSSM (для 64-разрядной Windows) и ввести команду nssm install notepad, которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы (рис 1).

Рисунок 1 — Окно запуска графического инсталлятора NSSM.

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

На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения (рис 2). Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.

Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке [4]:

· На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;

· Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;

· Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;

· И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.

Рисунок 2 — Настройки выключения службы в NSSM.

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

По умолчанию при падении службы NSSM пытается перезапустить ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения (рис 3).

Рисунок 3 — Настройки выходя для службы NSSM

На вкладке «Input/Output (I/O)» можно задать перенаправление вводавывода приложения в указанный файл (рис 4).

Рисунок 5 — Вкладка I/O в NSSM

На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие (рис 6).

Рисунок 6 — Вкладка Environment в NSSM

Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой: nssm install notepad ″C:Windowssystem32notepad.exe″

Управление службой Windows

После создания службы с помощью NSSM зайдем в оснастку Службы и найдем notepad. Как мы видим, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако стоит обратить внимание, что в качестве исполняемого файла указан nssm.exe (рис 7).

Рисунок 7 — Свойства службы

А если зайти в Диспетчер задач, то мы увидим следующее: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот (рис 8).

Рисунок 8 — Служба NSSM в диспетчере задач

Для удаления службы вводим команду nssm remove notepad в командной строке и подтверждаем ее удаление (рис 9).

Рисунок 9 — Удаление службы в NSSM

Так же есть способ удаления службы без подтверждения, для этого необходимо ввести команду nssm remove notepad confirm.

Дата добавления: 2021-07-19 ; просмотров: 272 ; Мы поможем в написании вашей работы!

Поделиться с друзьями:

Источник: studopedia.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru