Каковы различия между обычными процессами и услугами?
Каковы различия между обычными процессами (такими как firefox, gimp, skype и т. Д.) И сервисами (httpd, mysqld и т. Д.)? Очевидно, что сервисы отличаются по своей функции, но мне действительно интересно, что происходит под капотом на уровне ОС? К ним относятся по-другому?
1 ответ
Услуги под капотом - обычные процессы. Их отличает то, что они делают и как их запускают (но это не точное определение). Сервисы обычно не имеют пользовательского интерфейса и обычно запускаются, когда система загружается и работает в фоновом режиме, прослушивая запросы, поступающие от других программ или через сеть. Такие процессы называются демонами в мире Unix.
Существует более общее определение сервиса, которое более концептуально: сервис - это функция, которую предоставляет ваш компьютер. Это определение примерно соответствует тому, что управляется service
команда. Многие сервисы предоставляются демонами, но это не всегда так. Например, gdm
сервис (менеджер входа в систему по умолчанию) предоставляется процессом, который на самом деле не является демоном (он имеет пользовательский интерфейс для ввода пароля). Услуги, такие как console-setup
, mountall
или же networking
(взять примеры из /etc/init
) не предоставляются непрерывно работающими процессами, но включаются и отключаются с помощью некоторых команд, изменяющих состояние.
Еще одна связанная с этим концепция - это серверы. Сервер - это программа, которая прослушивает соединения из других программ. (Соединения могут осуществляться через сеть или с помощью различных локальных средств связи.) Многие серверы являются демонами, но недолговечная программа может быть сервером и не будет считаться демоном; программа с пользовательским интерфейсом также не будет считаться демоном. Например, редактор Emacs может запустить сервер, который прослушивает внешние запросы на открытие файлов (т.е. работает emacsclient myfile
открывает файл в работающем экземпляре Emacs, связавшись с соответствующим emascsserver
процесс); Emacs может запускаться в режиме демона, что означает, что сервер запущен, но без графического интерфейса (при открытии файла открывается окно). По сути, серверный компьютер - это компьютер, основной целью которого является запуск серверных программ.