Systemd Status P7: различия между версиями
Amike (обсуждение | вклад) |
Нет описания правки |
||
Строка 18: | Строка 18: | ||
* по возможности используйте метод запуска simple/dbus. Если у сервиса имеется режим работы foreground с включённым debug, лучше написать простой патч, который добавляет новую опцию запуска, без включения debug (как, например, реализовано в openntpd) | * по возможности используйте метод запуска simple/dbus. Если у сервиса имеется режим работы foreground с включённым debug, лучше написать простой патч, который добавляет новую опцию запуска, без включения debug (как, например, реализовано в openntpd) | ||
* если можно использовать socket-активацию - используйте. Часть сервисов не нужны непосредственно во время запуска системы или сразу после окончания загрузки (например: CUPS, alteratord, alterator-fbi) | * если можно использовать socket-активацию - используйте. Часть сервисов не нужны непосредственно во время запуска системы или сразу после окончания загрузки (например: CUPS, alteratord, alterator-fbi) | ||
* имена для unit-файлов должны совпадать с таковыми именами сервиса в /etc/init.d (не учитывая расширение): /etc/init.d/smb -> smb.service, lm_sensors3 -> lm_sensors3.service. Иначе systemd будет считать unit и rc-скрипт как два разных сервиса. | * имена для unit-файлов должны совпадать с таковыми именами сервиса в /etc/init.d (не учитывая расширение): /etc/init.d/smb -> smb.service, lm_sensors3 -> lm_sensors3.service. Иначе systemd будет считать unit и rc-скрипт как два разных сервиса. Если имена файлов различаются, должен быть симлинк с именем аналогичным имени сервиса в /etc/init.d (не учитывая расширение): /etc/init.d/bluetoothd - bluetooth.service(без "d" вконце) -> bluetoothd.service | ||
* не используйте жесткие зависимости, типа Require, только если такой тип зависимости действительно нужен | * не используйте жесткие зависимости, типа Require, только если такой тип зависимости действительно нужен | ||
* нельзя запаковывать в unit запуск rc-скрипта | * нельзя запаковывать в unit запуск rc-скрипта |
Версия от 18:00, 23 ноября 2012
Легенда к таблице
Поле "Сервис"
- имя пакета, в котором имеется rc-скрипт
Поле "Service(unit)"
Поле "socket"
- пустое: активация по сокету не целесообразно и не доступно
- имеет значение : целесообразно добавить поддержку активации по запросу к сервису
- записано имя .socket юнита: активация по запросу имеется и используется
Поле "Комментарии"
- если в поле стоит : сервис на данный момент работает не корректно с systemd
- комментарии к созданию unit-файла/сопутствующих файлов и сопутствующая информация
Рекомендации
- по возможности используйте метод запуска simple/dbus. Если у сервиса имеется режим работы foreground с включённым debug, лучше написать простой патч, который добавляет новую опцию запуска, без включения debug (как, например, реализовано в openntpd)
- если можно использовать socket-активацию - используйте. Часть сервисов не нужны непосредственно во время запуска системы или сразу после окончания загрузки (например: CUPS, alteratord, alterator-fbi)
- имена для unit-файлов должны совпадать с таковыми именами сервиса в /etc/init.d (не учитывая расширение): /etc/init.d/smb -> smb.service, lm_sensors3 -> lm_sensors3.service. Иначе systemd будет считать unit и rc-скрипт как два разных сервиса. Если имена файлов различаются, должен быть симлинк с именем аналогичным имени сервиса в /etc/init.d (не учитывая расширение): /etc/init.d/bluetoothd - bluetooth.service(без "d" вконце) -> bluetoothd.service
- не используйте жесткие зависимости, типа Require, только если такой тип зависимости действительно нужен
- нельзя запаковывать в unit запуск rc-скрипта
- старайтесь следовать правилу: unit поставляемый из "коробки" обеспечивает дефолтный запуск сервиса, все отличные варианты запуска обеспечиваются самим пользователем, перенеся unit в /etc/systemd/system и изменив по желанию. Соответственно не надо в дефолтном юните обеспечивать все возможные варианты запуска
- для передачи второстепенных параметров при запуске сервиса, используйте директиву EnvironmentFile или Environment
- в spec-файле используйте директиву %_unitdir
- все вопросы можно задать в devel@
Текущее состояние основных компонентов
Сервис | service(unit) | socket | Комментарии |
---|---|---|---|
389-Fedora-DS | |||
acct | |||
acpid | acpid.service | ||
alterator | |||
anacron | Type=oneshot; в юнит прописать настройки на CPULimit и IOLimit | ||
atftp | не запакованы файлы из /var/run (tmpfiles.d) | ||
apache-base | |||
apache2 | httpd2.service | запускается с неопределённой вероятностью | |
apache2-cache clean | rc-скрипт не корректный: не верная директива pidfile | ||
autofs | |||
audit | |||
arpwatch | |||
Avahi | avahi-daemon.service | avahi-daemon.socket | |
bacula-(client,director,etc) | не создаются нужные файлы в /var/run | ||
bind | |||
bluez | bluetooth.service | ? | необходимо выбрать одно имя для сервиса, сейчас используется два (для совместимости с sysvinit) слинкованное через сылку. Никто не обещает корректной работы такого хака в дальнейшем. В том виде поддержки который сейчас используется, сервис НЕ РАБОТАЕТ |
blcr | зачем нужен сервис, если для него нет модулей ядра в репозитории, т.е. сервис заранее не рабочий. | ||
bridge-utils | Type=oneshot | ||
conserver | - | Type=simple (без -d), подумать как реализовать запуск по запросу | |
console-scripts (consolesaver) | Type=oneshot; подумать, что делать с keytable | ||
collectd | rc-скрипт не корректный: не верная директива pidfile | ||
crond | crond.service | ||
cryptsetup | ? | ? | в .init.d лежит только cryptdisks.functions, rc-сервиса нет. Юнит вообще нужен? Как сейчас это работает? |
CUPS | cups.service | cups.socket | полная поддержка; запуск по требованию; добавить в юнит Wants на avahi-daemon.socket (или .service) |
dhcp-server (dhcpd) | |||
dnsmasq | Type=simple (запуск с параметром -k); Файл rc-скрипт большой, необходимо при написании юнита правильно разбить на части | ||
dovecot | dovecot.service | dovecot.socket | ошибка в скрипте настройки (не относится к systemd); запуск по требованию |
ebtables | Type=oneshot, подумать как реализовать аналог "service ebtables save" | ||
etcnet | большой скрипт, подумать как перенести на systemd (сейчас в systemd отрабатывается вызовом /etc/init.d/network) | ||
ethtool | Type=oneshot (данный сервис вообще нужен?) | ||
freeipmi-bmc-watchdog (bmc-watchdog) | Type=simple, правильно написать юнит, что бы не конфликтовать с настройками для sysvinit, т.к. /etc/sysconfig/bmc-watchdog - общий | ||
freenx-server | Type=forking, при написании юнита использовать опции сервера --stop, --start, etc. | ||
ganeti | |||
ganglia-gmetad | Type=forking (или пропатчить для отключения "демонизации" ) | ||
ganglia-gmond | Type=simple; на данный момент падает с сообщением "stack smashing detected" | ||
greylistd | Type=simple | ||
gpm | |||
hddtemp | rc-скрипт не корректный: указан путь в директиве pidfile, но файл по пути не создаётся; сервис пытается получить температуру с CDROM - "прилипает" к sr0 | ||
heartbeat | необходимо запаковать каталоги в /var/run/heartbeat (tmpfiles.d). Возможно пропатчить ldirectord для отключения "демонизации". На данный момент ldirectord не работает, вылетает с ошибкой: Can't locate LWP/UserAgent.pm in @INC. | ||
ifplugd | Type=forking; Возможно пропатчить для отключения "демонизации" | ||
ipsec-tools (racoon) | Type=simple (опция -F) | ||
iptables/iptables-ipv6 | Type=oneshot; продумать как реализовать аналог service save | ||
klogd | journald умеет читать "ядрённые" логи без помощи klogd. Возможно стоит отказаться от klogd | ||
Krb5 | kadmin.service, kprop.service, krb5kdc.service | ? | желательно изменить kprop.service на режим работы, аналогичному inetd (см. sshd@.service);krb5kdc.service прибито расположение PID файла, хотя в строке запуска используется переменная описанная в sysconfig/krb5kdc - надо поправить |
libkrb5 | Type=oneshot | ||
lm_sensors3 | Type=oneshot | ||
maui | Type=forking (можно пропатчить для отключения "демонизации"). Правильно, что pid-файл находится в /var/spool/maui/ ?? | ||
mdadm | mdadm.service | ||
microcode_ctl | Оно вообще надо?? | ||
monit | Type=simple (опция -I). Проверить, что monit будет корректно перезапускать сервисы при работающем systemd | ||
multipath-tools | Type=simple (опция -d) | ||
MySQL | |||
NetworkManager | Networkmanager.service, NetworkManager-wait-online.service | ||
nginx | можно запускать с "daemon=off", правда тогда надо подумать о разделении конфигов | ||
NFS Lock | nfslock.service | не запускается, сообщает об ошибке | |
nss-ldapd | nslcd.service | ||
ntpd | продумать правильную реализацию юнита (chroot, ntpdate) | ||
ocfs2-tools | необходимо запаковать каталог /var/run/o2cb (tmpfiles.d). Между двумя юнитами требуется правильно расставить зависимости | ||
openntpd | ntpd.service | немного подправить директиву EnvironmentFile в юните (можно его заставить "говорить" в лог меньше?) | |
openldap | slapd.service | ? | можно обсудить вопрос об использовании чрута средствами systemd |
openvpn | необходимо запаковать директорию /var/run/openvpn | ||
p0f | Type=simple (без опции -d) | ||
policycoreutils-mcstransd | Type=simple (параметр -f); rc-скрипт не корректный: указан путь в директиве pidfile, но файл по пути не создаётся | ||
policycoreutils-restorecond | Type=forking (можно пропатчить для отключения "демонизации") | ||
postfix | |||
postgresql | ? | с ldv@ обсуждалось, необходимо переписывать скрипты запуска, как sysv, так и писать правильный юнит-файл | |
pptpd | Type=simple (опция -f) | ||
qemu-kvm-el | Type=oneshot; в rc-файле указана директива pidfile, хотя она не нужна | ||
runawfe-botstation | rc-файл не корректный, не совпадают параметры: pidfile и PIDFILE | ||
samba | smbd.service, nmbd.service | ? | необходимо изменить unit-файл и поменять тип запуска сервиса на "simple" |
scanlogd | Общее: PID не создаётся, приложение не проверяет на наличие уже запущенной копии | ||
smartd | smartd.service | ||
slurm-master | Type=forking (можно пропатчить для отключения "демонизации") | ||
slurm-slave | Type=simple (опция -D) | ||
slurm-slurmdbd | Type=forking (можно пропатчить для отключения "демонизации") | ||
spamd | ? | не создаются нужные файлы в /var/run | |
spawn-fcgi | необходимо запаковать каталог /var/run/spawn-fcgi (tmpfiles.d); rc-файл не корректный, не совпадают параметры: pidfile и PIDFILE | ||
spice-vdagent | spice-vdagentd.service | - | изменить тип запуска с forking на simple и прописать в ExecStart ключ "-x" |
squid | squid.service | ? | |
squidmill | Type=forking (можно пропатчить для отключения "демонизации") | ||
sshd | sshd.service | ||
sysfsutils | Type=oneshot (оно надо сейчас?) | ||
sysstat | Type=oneshot | ||
syslogd | проблемы с reload, https://bugzilla.altlinux.org/show_bug.cgi?id=27868 | ||
torque-mom | PID файл находится в /var/spool/torque/mom_priv/ - это правильно? Type=forking (можно пропатчить для отключения "демонизации") | ||
torque-scheduler | PID файл находится в /var/spool/torque/scheduler_priv/ - это правильно? Type=forking | ||
torque-server | PID файл находится в /var/spool/torque/server_priv/ - это правильно? Type=forking (можно пропатчить для отключения "демонизации"); rc-скрипт зависает | ||
ulogd | ? | ||
update-wms | Type=oneshot | ||
virtualbox-common | Type=oneshot | ||
vzctl | Type=oneshot | ||
wpa_supplicant | Type=dbus | ||
xCAT-server | Type=forking | ||
xinetd | |||
zabbix-agent | необходимо запаковать каталог /var/run/zabbix/ (tmpfiles.d); Type=forking |
Команда для вычисления списка пакетов, в которых есть init-файлы, но нет unit-файлов
comm -23 <(grep -h '^/etc/rc\.d/init\.d/' /ALT/Sisyphus/*/base/contents_index |cut -f2 |sort -u) <(grep -h '^/lib/systemd/system/' /ALT/Sisyphus/*/base/contents_index |cut -f2 |sort -u)