Systemd
Команды
systemd-analyze {blame,plot}
systemd-cgls
systemd-cgtop
systemctl kill -s SIGKILL *.service
systemctl kill -s HUP --kill-who=main *.service
systemctl is-{active,enabled,failed} *.service
systemctl list-units --type=service
systemctl list-dependencies *.service --{after,before}
systemctl edit --full *.service
systemd-escape -p --suffix=mount '/home/postgres/cluster/13/pg_stat_tmp'
Составление юнитов
Общее
Модификаторы
Модификатор принимает положение в начале строкового значения параметра
Модификатор + определяет исполнение операции от пользователя root
Модификатор - определяет игнорирование кода завершения исполнения операции, существование объекта файловой системы и т.д.
Модификатор ! возвращает противоположное логическое true/false
Модификатор ~ инвентирует список объектов как черный список
Переменные
$MAINPID
Секция [Unit]
Description= //описание юнита
Requires= //значение имен юнитов, являющихся жесткими зависимостями Wants= //значение имен юнитов, являющихся мягкими зависимостями
After= //текущий юнит выставить в очередь запуска после перечисленных юнитов Before= //текущий юнит выставить в очередь запуска до перечисленных юнитов
PartOf= //значение имени юнита, команда запуска/перезапуска/останова которого так же распространяется на текущий юнит
Conflicts= //значение имен юнитов, запуск которых является конфликтным и завершает выполнение текущего юнита
DefaultDependencies=no //не задействовать зависимости по умолчанию
Секция [Service]
ExecStartPre={,+,-}
ExecStart={,+,-}
ExecStartPost={,+,-}
ExecStop= ExecStopPost= //вызывается и в случае неудачного запуска службы KillMode=mixed
RemainAfterExit=yes //считать службу активной при фактическом завершении ее процессов
Restart={always,on-success,on-failure,on-abnormal,on-abort,on-watchdog}
RestartSec=5
Environment="LD_PRELOAD=/path/to/malloc/library" //переменная среды исполнения службы
EnvironmentFile={,-}/etc/sysconfig/openvswitch //файл, содержащий переменные среды
OOMScoreAdjust=-1000
User= Group=
StandardInput=socket //inetd запуск
InaccessibleDirectories=/home //запрет видимости директории ReadOnlyDirectories=/var //запрет записи в директории, кроме смонтированных ФС внутри директории
CapabilityBoundingSet={,~} /разделенный пробелом список |привилегий
DeviceAllow=/dev/null r{,w} //белый список разрешения обращения к блочным устройствам
BlockIOWeight=500 //от 10 до 1000, по умолчанию 1000 BlockIOWeight=/dev/disk/by-id/ata-SAMSUNG_MMCRE28G8MXP-0VBL1_DC06K01009SE009B5252 750 BlockIOWeight=/home/lennart 750 BlockIOReadBandwith=/var/log 5M
Составление юнита socket
[Unit] Description=SSH Socket for Per-Connection Servers [Socket] ListenStream=22 Accept=yes //yes - третья схема inetd (nowait), no - вторая (wait) [Install] WantedBy=sockets.target
Составление юнита timer
.. //период/промежуток между двумя значениями времени (с года по год; с месяца по месяц; с дня по день; и т.д.)
, //разделитель перечисления времени (год,год; месяц,месяц; день;день; и т.д.)
* //маска подстановки любого значения
[Unit] Description=test
[Timer] OnBootSec=10s //запустить через заданное время после поднятия системы OnUnitActiveSec=10s / OnUnitInactiveSec=10s //повторный запуск через каждый заданный промежуток времени, начиная с момента последнего запуска/завершения юнита
OnCalendar=ДеньНедели Год-Месяц-День Часы:Минуты:Секунды //точное время запуска //пропуск "ДеньНедели" означает с пн по вс OnCalendar=weekly //запускаться один раз в неделю (в 12:00 в понедельник) OnCalendar=Sat,Sun 20:00 //в сб и вс в 20:00 OnCalendar=Mon..Fri 22:30 //с пн по пт в 22:30 Persistent=true //запустить пропущенное задание
[Install] WantedBy=timers.target
Составление юнита mount
[Unit] Description=test DefaultDependencies=no Conflicts=umount.target Before=local-fs.target
[Mount] What=tmpfs What=/dev/$device Where=/mnt/tmp Type=tmpfs //что монтируется: tmpfs -> тип монтируемого: tmpfs Type=xfs //для блочного устройства Options=mode=1777,nosuid,nodev,size=1G //для tmpfs Options=mode=defaults //для xfs и т.п.
[Install] WantedBy=local-fs.target
Журналирование
| Параметр | Значения | значение по умолчанию | Версия systemd |
| Storage - хранение журнала | volatile - хранение только в оперативной памяти persistent - хранение на накопителе auto - хранение на накопителе; хранение в оперативной памяти по окончанию свободного места на накопителе none - хранение отключено |
auto | 186 |
| ReadKMsg - обработка сообщений /dev/kmsg | yes, no | yes | 235 |
| Compress - сжатие журнала | yes, no | no | - |
| SystemMaxUse - максимальный объем хранимого журнала | [0-9]{1,X}(K|M|G|T) | - | - |
| SystemKeepFree - минимально допустимый объeм свободного места на накопителе | [0-9]{1,X}(K|M|G|T) | - | - |