LINUX.ORG.RU
ФорумAdmin

О сложности написания скриптов OpenRC и systemd

 , ,


0

4

Сначала я взглянул на самый простой вариант

#!/sbin/openrc-run
command="/path/to/binary/file"
name="some words about service"
[Unit]
Description=some words about service
[Service]
ExecStart=/path/to/binary/file
Существенной разницы нет, и тут меня systemd порадовал ― он действительно позволяет писать unit также просто, как и в других системах инициализации. Даунгрейда нет.

Далее посмотрел на реальные сервисы, например hostapd

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target

[Service]
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf

[Install]
WantedBy=multi-user.target
#!/sbin/openrc-run
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

pidfile="/run/${SVCNAME}.pid"
command="/usr/sbin/hostapd"
command_args="-P ${pidfile} -B ${OPTIONS} ${CONFIGS}"

extra_started_commands="reload"

depend() {
        local myneeds=
        for iface in ${INTERFACES}; do
                myneeds="${myneeds} net.${iface}"
        done

        [ -n "${myneeds}" ] && need ${myneeds}
        use logger
}

start_pre() {
        local file

        for file in ${CONFIGS}; do
                if [ ! -r "${file}" ]; then
                        eerror "hostapd configuration file (${CONFIG}) not found"
                        return 1
                fi
        done
}

reload() {
        start_pre || return 1

        ebegin "Reloading ${SVCNAME} configuration"
        kill -HUP $(cat ${pidfile}) > /dev/null 2>&1
        eend $?
}
Сначала у меня промельнкнуло в голове «вау, насколько немногословно написан systemd unit», но после этого всмотрелся в openrc скрипт и понял, что кроме простого запуска он реализует также и проверку наличия конфигурационного файла, и наличия интерфейса, а также дополнительную команду для обновления конфигурации hostapd без перезапуска.

В связи с этим вопрос ― каким образом нужно изменить hostapd.service для того, чтобы он был также функционален, как и в случае с openrc?

Deleted

Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от alpha

Ну и для проверки наличия файла есть AssertPathExists

Из документации не очень понятно (потому что «before starting») ― Assert* срабатывают только при старте, или при reload тоже?

Deleted
()
Ответ на: комментарий от Deleted

Ты можешь поставить какое-нибудь эхо и посмотреть что и когда срабатывает, если документация не полна, или слишком сложна.

imul ★★★★★
()
Ответ на: комментарий от alpha

Ничего плохого в этом не вижу. Это какие-то предрассудки.

anonymous00 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.