systemd (продолжение)

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 08 июн 2023, 09:25

Это продолжение давней темы systemd - ночной кошмар для пользователя - тянущейся ещё с 2012 года...
Но нельзя так долго, 11 лет, продолжать одну тему :lol:
Тогда это был "ночной кошмар" (кто застал), а теперь это "реальность от которой никуда не денешься".

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 08 июн 2023, 09:31

Olej писал(а):
08 июн 2023, 09:25
Это продолжение
Самое главное: самое полное описание systemd здесь: systemd для администраторов:
Lennart Poettering (автор)*
Сергей Пташник (русский перевод)†
Данный документ доступен на условиях лицензии CC-BY-SA 3.0 Unported
28 октября 2017 г.
И те опции status, которые обеспечивают сразу и полный вывод (постоянно требуется!):

Код: Выделить всё

olej@277938:~$ systemctl status --no-pager --full danted
● danted.service - SOCKS (v4 and v5) proxy daemon (danted)
   Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2023-03-29 11:13:27 MSK; 1h 20min ago
     Docs: man:danted(8)
           man:danted.conf(5)
  Process: 545 ExecStartPre=/bin/sh -c   	uid=`sed -n -e "s/[[:space:]]//g" -e "s/#.*//" -e "/^user\.privileged/{s/[^:]*://p;q;}" /etc/danted.conf`;  	if [ -n "$uid" ]; then  		touch /var/run/danted.pid;  		chown $uid /var/run/danted.pid;  	fi  	 (code=exited, status=0/SUCCESS)
  Process: 562 ExecStart=/usr/sbin/danted (code=exited, status=1/FAILURE)
 Main PID: 562 (code=exited, status=1/FAILURE)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 08 июн 2023, 09:49

Olej писал(а):
08 июн 2023, 09:25
Но нельзя так долго, 11 лет, продолжать одну тему
Но главный повод для новой темы: как писать сервисные файлы, юниты ... в /lib/systemd/system + /etc/init.d (старого стиля) + /etc/systemd/system ... куда ещё они их втулят? :-( :-o

Что такое сервисный файл?
Sep 16, 2021
Параметры сервисного файла
Sep 16, 2021
Это всё вызвано разборками с miredo: IPv6 (2)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 15 окт 2023, 01:21

Olej писал(а):
08 июн 2023, 09:49
куда ещё они их втулят?
Новинка с некоторых времён ... systemd user services and systemctl --user
18 Feb 2021
Если мы удалим службу systemd в ~/.config/systemd/user, она будет воспринята systemd как пользовательская служба. Большим преимуществом является то, что конкретный пользователь теперь управляет этой службой без необходимости использования sudo.

Код: Выделить всё

olej@R420:~$ ls /usr/lib/systemd/user/
app.slice                                      gpg-agent.service                              org.gnome.SettingsDaemon.PrintNotifications.service  printer.target
at-spi-dbus-bus.service                        gpg-agent.socket                               org.gnome.SettingsDaemon.PrintNotifications.target   pulseaudio.service
background.slice                               gpg-agent-ssh.socket                           org.gnome.SettingsDaemon.Rfkill.service              pulseaudio.socket
basic.target                                   graphical-session-pre.target                   org.gnome.SettingsDaemon.Rfkill.target               pulseaudio-x11.service
blueman-applet.service                         graphical-session-pre.target.wants             org.gnome.SettingsDaemon.ScreensaverProxy.service    session-migration.service
blueman-manager.service                        graphical-session.target                       org.gnome.SettingsDaemon.ScreensaverProxy.target     session.slice
bluetooth.target                               gvfs-afc-volume-monitor.service                org.gnome.SettingsDaemon.Sharing.service             shutdown.target
colord-session.service                         gvfs-daemon.service                            org.gnome.SettingsDaemon.Sharing.target              smartcard.target
dbus-org.bluez.obex.service                    gvfs-goa-volume-monitor.service                org.gnome.SettingsDaemon.Smartcard.service           sockets.target
dbus.service                                   gvfs-gphoto2-volume-monitor.service            org.gnome.SettingsDaemon.Smartcard.target            sockets.target.wants
dbus.socket                                    gvfs-metadata.service                          org.gnome.SettingsDaemon.Sound.service               sound.target
dconf.service                                  gvfs-mtp-volume-monitor.service                org.gnome.SettingsDaemon.Sound.target                speech-dispatcher.service
default.target                                 gvfs-udisks2-volume-monitor.service            org.gnome.SettingsDaemon.UsbProtection.service       speech-dispatcher.socket
dirmngr.service                                obex.service                                   org.gnome.SettingsDaemon.UsbProtection.target        ssh-agent.service
dirmngr.socket                                 org.gnome.Evince.service                       org.gnome.SettingsDaemon.Wacom.service               systemd-exit.service
evolution-addressbook-factory.service          org.gnome.SettingsDaemon.A11ySettings.service  org.gnome.SettingsDaemon.Wacom.target                systemd-tmpfiles-clean.service
evolution-calendar-factory.service             org.gnome.SettingsDaemon.A11ySettings.target   org.gnome.SettingsDaemon.Wwan.service                systemd-tmpfiles-clean.timer
evolution-source-registry.service              org.gnome.SettingsDaemon.Color.service         org.gnome.SettingsDaemon.Wwan.target                 systemd-tmpfiles-setup.service
evolution-user-prompter.service                org.gnome.SettingsDaemon.Color.target          org.gnome.SettingsDaemon.XSettings.service           timers.target
exit.target                                    org.gnome.SettingsDaemon.Datetime.service      org.gnome.SettingsDaemon.XSettings.target            vte-spawn-.scope.d
gamemoded.service                              org.gnome.SettingsDaemon.Datetime.target       paths.target                                         xdg-desktop-autostart.target
glib-pacrunner.service                         org.gnome.SettingsDaemon.Housekeeping.service  pipewire-media-session.service                       xdg-desktop-portal-gtk.service
gnome-keyring.service                          org.gnome.SettingsDaemon.Housekeeping.target   pipewire.service                                     xdg-desktop-portal-rewrite-launchers.service
gnome-keyring-ssh.service                      org.gnome.SettingsDaemon.Keyboard.service      pipewire.socket                                      xdg-desktop-portal.service
gnome-session-x11-services-ready.target.wants  org.gnome.SettingsDaemon.Keyboard.target       pk-debconf-helper.service                            xdg-desktop-portal-xapp.service
gnome-session-x11-services.target.wants        org.gnome.SettingsDaemon.MediaKeys.service     pk-debconf-helper.socket                             xdg-document-portal.service
gnome-terminal-server.service                  org.gnome.SettingsDaemon.MediaKeys.target      plasma-kactivitymanagerd.service                     xdg-permission-store.service
gpg-agent-browser.socket                       org.gnome.SettingsDaemon.Power.service         plasma-kded.service
gpg-agent-extra.socket                         org.gnome.SettingsDaemon.Power.target          plasma-kglobalaccel.service

Код: Выделить всё

olej@R420:~$ ls -l /usr/lib/systemd/user/pulse*
-rw-r--r-- 1 root root 1121 фев 16  2023 /usr/lib/systemd/user/pulseaudio.service
-rw-r--r-- 1 root root  147 фев 21  2022 /usr/lib/systemd/user/pulseaudio.socket
-rw-r--r-- 1 root root  424 фев 16  2023 /usr/lib/systemd/user/pulseaudio-x11.service

Код: Выделить всё

olej@R420:~$ systemctl --user --no-pager --full status pulseaudio.service
● pulseaudio.service - Sound Service
     Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-10-14 09:44:53 EEST; 14h ago
TriggeredBy: ● pulseaudio.socket
   Main PID: 2897 (pulseaudio)
      Tasks: 4 (limit: 115772)
     Memory: 14.9M
        CPU: 10min 50.996s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pulseaudio.service
             └─2897 /usr/bin/pulseaudio --daemonize=no --log-target=journal

окт 14 15:05:41 R420 pulseaudio[2897]: Скорее всего, это ошибка в драйвере ALSA «snd_usb_audio». Пожалуйста, сообщите об этой проблеме разработчикам ALSA.
окт 14 15:05:41 R420 pulseaudio[2897]: Процесс разбужен с установленным POLLOUT, однако последующий вызов snd_pcm_avail() вернул 0 или другое значение, меньшее чем min_avail.
окт 14 21:54:10 R420 pulseaudio[2897]: Got POLLNVAL from ALSA
окт 14 21:54:10 R420 pulseaudio[2897]: Error opening PCM device front:1: Нет такого файла или каталога
окт 14 21:55:37 R420 pulseaudio[2897]: Got POLLNVAL from ALSA
окт 14 21:55:37 R420 pulseaudio[2897]: Error opening PCM device front:1: Нет такого файла или каталога
окт 14 21:57:21 R420 pulseaudio[2897]: Got POLLNVAL from ALSA
окт 14 21:57:21 R420 pulseaudio[2897]: Got POLLNVAL from ALSA
окт 14 21:57:21 R420 pulseaudio[2897]: Error opening PCM device front:1: Нет такого файла или каталога
окт 14 21:57:21 R420 pulseaudio[2897]: Error opening PCM device hw:1: Нет такого файла или каталога
Вот так теперь управляеся Pulseaudio-сервер.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 15 окт 2023, 18:29

Olej писал(а):
15 окт 2023, 01:21
Новинка с некоторых времён ...
Это существенно важно :!:
Как это работает
systemd позволяет пользователю управлять службами в личном, отдельном экземпляре systemd. Благодаря этому пользователь может запускать, останавливать, включать и отключать свои собственные юниты. Это очень удобно в случае демонов и служб, которые обычно запускаются для отдельного пользователя...
Имейте в виду, что systemd --user представляет собой процесс для каждого пользователя, а не для сессии. Смысл заключается в том, что большая часть ресурсов, обрабатываемых пользовательскими службами, такие как сокеты или файлы состояния будут создаваться отдельно для каждого пользователя (в его домашнем каталоге), и не за один сеанс. Это означает, что все пользовательские службы работают вне сеанса. Как следствие, программы, которые должны быть запущены внутри сессии, вероятно, прервут выполнение пользовательских служб. С помощью systemd в пользовательском сеансе обрабатывается довольно много данных.
Совет: Если вы хотите включить службу для всех пользователей, а не для пользователя, выполняющего команду systemctl , запустите systemctl --user --global enable service от имени суперпользователя.
Пользовательский процесс systemd запускается сразу после первого входа пользователя в систему, и будет убит после завершения последнего сеанса пользователя. Иногда может быть полезно запустить службу сразу после загрузки, и поддерживать процесс systemd запущенным даже после завершения последнего сеанса пользователя, например, чтобы некоторый пользовательский процесс работал без какой-либо открытой сессии. Для этой цели используются долговременные службы. Используйте следующую команду, чтобы включить долговременную службу для конкретного пользователя:

Код: Выделить всё

# loginctl enable-linger username

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 15 окт 2023, 18:32

Olej писал(а):
15 окт 2023, 18:29
Это существенно важно
Как запустить сервисы Systemd без пользователя root / sudo
Systemd – это современный инит и замена rc в стиле SysV для систем Linux, которая использует многие современные функции ядра Linux.
...
Стандартные файлы модулей Systemd , которые поставляются с системой Linux или устанавливаются сторонними приложениями, обычно запускаются от имени пользователя root или системного пользователя.
Используемая опция:
–-user
Это тот же процесс, который вы можете использовать для создания любой другой службы Systemd, которой хотите управлять без повышения привилегий или создания другого системного пользователя для запуска службы.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 05 ноя 2023, 16:27

Olej писал(а):
08 июн 2023, 09:49
как писать сервисные файлы, юниты
Наиболее полное руководство, естественно:

Код: Выделить всё

[olej@xenix ~]$ man systemd.service
...
Но особо они намундрячили с префиксами команд:
Table 1. Special executable prefixes
┌──┬───────────────────────────────────────────────────────────┐
│ Prefix │ Effect │
├──┼───────────────────────────────────────────────────────────┤
│"@" │ If the executable path is prefixed with "@", the second specified │
│ │ token will be passed as "argv[0]" to the executed process (instead │
│ │ of the actual filename), followed by the further arguments │
│ │ specified. │
├──┼───────────────────────────────────────────────────────────┤
│"-" │ If the executable path is prefixed with "-", an exit code of the │
│ │ command normally considered a failure (i.e. non-zero exit status or │
│ │ abnormal exit due to signal) is recorded, but has no further effect │
│ │ and is considered equivalent to success. │
├──┼───────────────────────────────────────────────────────────┤
│":" │ If the executable path is prefixed with ":", environment variable │
│ │ substitution (as described by the "Command Lines" section below) is │
│ │ not applied. │
├──┼───────────────────────────────────────────────────────────┤
│"+" │ If the executable path is prefixed with "+" then the process is │
│ │ executed with full privileges. In this mode privilege restrictions │
│ │ configured with User=, Group=, CapabilityBoundingSet= or the │
│ │ various file system namespacing options (such as PrivateDevices=, │
│ │ PrivateTmp=) are not applied to the invoked command line (but still │
│ │ affect any other ExecStart=, ExecStop=, ... lines). However, note │
│ │ that this will not bypass options that apply to the whole control │
│ │ group, such as DevicePolicy=, see systemd.resource-control(5) for │
│ │ the full list. │
├──┼───────────────────────────────────────────────────────────┤
│"!" │ Similar to the "+" character discussed above this permits invoking │
│ │ command lines with elevated privileges. However, unlike "+" the "!" │
│ │ character exclusively alters the effect of User=, Group= and │
│ │ SupplementaryGroups=, i.e. only the stanzas that affect user and │
│ │ group credentials. Note that this setting may be combined with │
│ │ DynamicUser=, in which case a dynamic user/group pair is allocated │
│ │ before the command is invoked, but credential changing is left to │
│ │ the executed process itself. │
├──┼───────────────────────────────────────────────────────────┤
│"!!" │ This prefix is very similar to "!", however it only has an effect │
│ │ on systems lacking support for ambient process capabilities, i.e. │
│ │ without support for AmbientCapabilities=. It's intended to be used │
│ │ for unit files that take benefit of ambient capabilities to run │
│ │ processes with minimal privileges wherever possible while remaining │
│ │ compatible with systems that lack ambient capabilities support. │
│ │ Note that when "!!" is used, and a system lacking ambient │
│ │ capability support is detected any configured SystemCallFilter= and │
│ │ CapabilityBoundingSet= stanzas are implicitly modified, in order to │
│ │ permit spawned processes to drop credentials and capabilities │
│ │ themselves, even if this is configured to not be allowed. Moreover, │
│ │ if this prefix is used and a system lacking ambient capability │
│ │ support is detected AmbientCapabilities= will be skipped and not be │
│ │ applied. On systems supporting ambient capabilities, "!!" has no │
│ │ effect and is redundant. │
└──┴───────────────────────────────────────────────────────────┘
"@", "-", ":", and one of "+"/"!"/"!!" may be used together and they can appear in any order. However, only one of "+", "!", "!!" may be used at a time. Note that these prefixes are also supported for the other command line settings, i.e. ExecStartPre=, ExecStartPost=, ExecReload=, ExecStop= and ExecStopPost=.
Причём эта дрянь меняется от версии к версии systemd - ещё вчера его не было, а сегодня появилось...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

systemd (продолжение)

Непрочитанное сообщение Olej » 07 дек 2023, 23:10

Хорошая статья, подводящая итоги эксплуатации systemd - systemd десять лет спустя. Историческая и техническая ретроспектива
30 мая 2020 в 19:00
Читайте :!: Очень познавательно :!:
Но для меня лично systemd это даже больше, чем middleware: это новая эпоха в истории экосистемы Linux, в одном ряду с KVM, Wine, Kubernetes и другими технологиями.

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей