Назад | Перейти на главную страницу

systemd: область действия против службы

В страница руководства для области видимости говорит:

В отличие от единиц обслуживания, единицы области видимости управляют процессами, созданными извне, и не разделяют процессы сами по себе.

На моем сервере RHEL я вижу, что gdm принадлежит службе gdm. Так делает его ребенок, gdm-simple-slave. gdm-simple-slave создал gdm-session-worker, но этот процесс принадлежит области, а не службе gdm.

В свете этого, что значит "внешний процесс"означает, а в чем разница между услугой и областью действия?"

Для тех, кто предпочитает код:

# systemctl status gdm
gdm.service - GNOME Display Manager
   Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled)
   Active: active (running) since Sun 2018-03-04 16:27:45 EST; 1 day 3h ago
  Process: 1330 ExecStartPost=/bin/bash -c TERM=linux /usr/bin/clear > /dev/tty1 (code=exited, status=0/SUCCESS)
 Main PID: 1307 (gdm)
   CGroup: /system.slice/gdm.service
           ├─1307 /usr/sbin/gdm
           ├─1331 /usr/libexec/gdm-simple-slave --display-i...
           └─1364 /usr/bin/Xorg :0 -background none -verbos...
# ps -ef|grep 1331
root      1331  1307  0 Mar04 ?    00:00:00 /usr/libexec/gdm-simple-slave...
root      2032  1331  0 Mar04 ?    00:00:00 gdm-session-worker ...
# systemctl status 2032
session-38.scope - Session 38 of user root
   Loaded: loaded (/run/systemd/system/session-38.scope; static)
  Drop-In: /run/systemd/system/session-38.scope.d
           └─90-After-systemd-logind\x2eservice.conf, 90-After-systemd-user-sessions\x2eservice.conf, 90-Description.conf, 90-SendSIGHUP.conf, 90-Slice.conf
   Active: active (running) since Sun 2018-03-04 21:12:08 EST; 22h ago

Созданный извне процесс - это процесс, который был порожден процессом, отличным от демона systemd, работающего как PID 1.

Как для области действия, так и для службы systemd создаст контрольные группы, чтобы вы могли управлять процессами внутри нее в целом. (Например, вы можете использовать systemctl stop чтобы остановить область видимости и убить все процессы внутри нее.)

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

Например, с gdm-session-worker это невозможно, поскольку предполагается, что он будет порожден gdm-simple-slave ... Итак, чтобы по-прежнему сохранять отдельный сеанс для каждого gdm-session-worker, gdm будет по-прежнему связываются с systemd, чтобы попросить его создать новую область видимости, а затем создать этот gdm-session-worker в этой новой области.

Надеюсь, это ответит на ваш вопрос ... Вы уже нашли systemd scope человек страница. Если вы хотите более подробно изучить API, вы можете изучить Новые интерфейсы группы управления, хотя, возможно, более простой способ попробовать - использовать systemd-run --scope команда.