Страница 1 из 1
systemd (продолжение)
Добавлено: 08 июн 2023, 09:25
Olej
Это продолжение
давней темы
systemd - ночной кошмар для пользователя - тянущейся ещё с 2012 года...
Но нельзя так долго, 11 лет, продолжать одну тему
Тогда это был "ночной кошмар" (кто застал), а теперь это "реальность от которой никуда не денешься".
systemd (продолжение)
Добавлено: 08 июн 2023, 09:31
Olej
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)
systemd (продолжение)
Добавлено: 08 июн 2023, 09:49
Olej
Olej писал(а): ↑08 июн 2023, 09:25
Но нельзя так долго, 11 лет, продолжать одну тему
Но главный повод для новой темы: как
писать сервисные файлы, юниты ... в /lib/systemd/system + /etc/init.d (старого стиля) + /etc/systemd/system ... куда ещё они их втулят?
Что такое сервисный файл?
Sep 16, 2021
Параметры сервисного файла
Sep 16, 2021
Это всё вызвано разборками с miredo:
IPv6 (2)
systemd (продолжение)
Добавлено: 15 окт 2023, 01:21
Olej
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-сервер.
systemd (продолжение)
Добавлено: 15 окт 2023, 18:29
Olej
Olej писал(а): ↑15 окт 2023, 01:21
Новинка с некоторых времён ...
Это существенно важно
Как это работает
systemd позволяет пользователю управлять службами в личном, отдельном экземпляре systemd. Благодаря этому пользователь может запускать, останавливать, включать и отключать свои собственные юниты. Это очень удобно в случае демонов и служб, которые обычно запускаются для отдельного пользователя...
Имейте в виду, что systemd --user представляет собой процесс для каждого пользователя, а не для сессии. Смысл заключается в том, что большая часть ресурсов, обрабатываемых пользовательскими службами, такие как сокеты или файлы состояния будут создаваться отдельно для каждого пользователя (в его домашнем каталоге), и не за один сеанс. Это означает, что все пользовательские службы работают вне сеанса. Как следствие, программы, которые должны быть запущены внутри сессии, вероятно, прервут выполнение пользовательских служб. С помощью systemd в пользовательском сеансе обрабатывается довольно много данных.
Совет: Если вы хотите включить службу для всех пользователей, а не для пользователя, выполняющего команду systemctl , запустите systemctl --user --global enable service от имени суперпользователя.
Пользовательский процесс systemd запускается сразу после первого входа пользователя в систему, и будет убит после завершения последнего сеанса пользователя. Иногда может быть полезно запустить службу сразу после загрузки, и поддерживать процесс systemd запущенным даже после завершения последнего сеанса пользователя, например, чтобы некоторый пользовательский процесс работал без какой-либо открытой сессии. Для этой цели используются долговременные службы. Используйте следующую команду, чтобы включить долговременную службу для конкретного пользователя:
systemd (продолжение)
Добавлено: 15 окт 2023, 18:32
Olej
Olej писал(а): ↑15 окт 2023, 18:29
Это существенно важно
Как запустить сервисы Systemd без пользователя root / sudo
Systemd – это современный инит и замена rc в стиле SysV для систем Linux, которая использует многие современные функции ядра Linux.
...
Стандартные файлы модулей Systemd , которые поставляются с системой Linux или устанавливаются сторонними приложениями, обычно запускаются от имени пользователя root или системного пользователя.
Используемая опция:
–-user
Это тот же процесс, который вы можете использовать для создания любой другой службы Systemd, которой хотите управлять без повышения привилегий или создания другого системного пользователя для запуска службы.
systemd (продолжение)
Добавлено: 05 ноя 2023, 16:27
Olej
Olej писал(а): ↑08 июн 2023, 09:49
как писать сервисные файлы, юниты
Наиболее полное руководство, естественно:
Но особо они намундрячили с префиксами команд:
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 - ещё вчера его не было, а сегодня появилось...
systemd (продолжение)
Добавлено: 07 дек 2023, 23:10
Olej
Хорошая статья, подводящая итоги эксплуатации systemd -
systemd десять лет спустя. Историческая и техническая ретроспектива
30 мая 2020 в 19:00
Читайте
Очень познавательно
Но для меня лично systemd это даже больше, чем middleware: это новая эпоха в истории экосистемы Linux, в одном ряду с KVM, Wine, Kubernetes и другими технологиями.