le BASH/SH/*SH c'est juste une syntaxe horrible, avec aucune robustesse, et quand quelqu'un le maîtrise bien, le relire c'est juste mission impossible
C'est l'un des rares arguments valables pour systemd, sauf que... ben, les unit systemd ne semblent pas si simples que ça non plus.
Peu importe que ça soit vrai ou pas, peut-être sera-tu intrigué par ces alternatives comme je l'ai été (mais jamais assez pour tester le code sur mes machines perso!):
dinit, le dernier que j'ai "trouvé" en faisant le zombi sur IRC. Il me semble qu'il utilise une syntaxe déclarative, comme systemd.
s6 qui utilise son propre DSL, justement parce que comme tu l'as pointé, bourne shell est loin d'être sympa.
Bon, après, mon script runit le plus compliqué, et de très, très loin, c'est celui qui démarre udevd-systemd, programme qui existait bien avant systemd (donc, ses défauts ne proviennent pas de systemd), que voici:
#!/bin/sh
. /etc/runit/common
need()
{
i=0
while ! test -e "1ドル"
do
sleep "0.$i"
test "$i" = 9 || i=$((i+1))
done
}
mkdir -p /run/udev
rm -f /run/udev/control #just in case
rm -f /run/udevd_ready #just in case
(
need /run/udev/control # not sure we really need to wait for it
echo "Trigger+settle:"
udevadm --debug trigger --type=subsystems --action=add
udevadm --debug trigger --type=devices --action=add
udevadm --debug settle
>/run/udevd_ready
echo "Done: trigger+settle"
) &
echo "Starting $SVNAME"
exec env - PATH="$PATH" /lib/systemd/systemd-udevd -N late
Quant à sa dépendance, qui est un truc que je source de partout:
#!/bin/sh
#this file provides some automatic features for runit daemons
#notably it:
#* provides the variable SVNAME, which is the name of the daemon dir
#* provides the die() function
#* sources an existing ./conf file
#* automatically rotates logs on startup if there are logs and AUTO_ROTATE=yes
#* redirects stderr to stdout
#* enables some shell verbosity and safeties (-xe)
die()
{
printf "%s\n" "$@" | tee ./down
exit 1
}
SVNAME="$(basename $(pwd))"
HAS_LOG="$(test -d "$(pwd)/log" && printf "yes")"
exec 0<&-
exec 2>&1
set -xe
test -f conf && . ./conf
if test "0ドル" = "run"
then
if test "$SVNAME" = "log"
then
SVLOG="$(basename $(dirname $(pwd)))"
SVNAME="${SVLOG}/${SVNAME}"
AUTO_ROTATE="${AUTO_ROTATE:="no"}"
fi
test "yes" = "${AUTO_ROTATE}" -a "yes" = "$HAS_LOG" && \
sv alarm "$(pwd)/log"
fi
On est très loin, je pense, des horribles scripts que l'on vois pour rc.d dans debian, notamment, pas vrai?
D'ailleurs sur ce système j'ai un peu fait les trucs en mode organique, du coup s'pas super clean...
La quasi totalité des autres daemons sont lancés ainsi:
Comme tu le vois, c'est très simple, et ça ne gère pas l'un des autres avantages de systemd: la gestion des dépendances. D'un autre côté, en pratique ce n'est pas gênant, surtout sur un desktop. Je fais aussi tourner mon Xorg de cette façon, mais i3 n'aime pas trop mon humour, il faut que je trouve la motivation pour utiliser un truc un peu moins monolithique pour avoir vraiment ce que je veux. Notamment, avoir les entrées contrôlées par leur propre daemon, au lieu d'avoir le WM qui fait tout: son job, c'est les fenêtres, par les raccourcis clavier, après tout.
Mais bon, je comprend que des gens qui ont autre chose a faire ne s'amusent pas avec ça :) (sur un bureau, du moins)
[^] # Re: Je pose la question dans l'autre sens
Posté par freem . En réponse au journal Les problèmes d’un desktop sans systemd ?. Évalué à 2.
C'est l'un des rares arguments valables pour systemd, sauf que... ben, les unit systemd ne semblent pas si simples que ça non plus.
Peu importe que ça soit vrai ou pas, peut-être sera-tu intrigué par ces alternatives comme je l'ai été (mais jamais assez pour tester le code sur mes machines perso!):
Bon, après, mon script runit le plus compliqué, et de très, très loin, c'est celui qui démarre
udevd-systemd, programme qui existait bien avant systemd (donc, ses défauts ne proviennent pas de systemd), que voici:Quant à sa dépendance, qui est un truc que je source de partout:
On est très loin, je pense, des horribles scripts que l'on vois pour
rc.ddans debian, notamment, pas vrai?D'ailleurs sur ce système j'ai un peu fait les trucs en mode organique, du coup s'pas super clean...
La quasi totalité des autres daemons sont lancés ainsi:
Comme tu le vois, c'est très simple, et ça ne gère pas l'un des autres avantages de systemd: la gestion des dépendances. D'un autre côté, en pratique ce n'est pas gênant, surtout sur un desktop. Je fais aussi tourner mon Xorg de cette façon, mais i3 n'aime pas trop mon humour, il faut que je trouve la motivation pour utiliser un truc un peu moins monolithique pour avoir vraiment ce que je veux. Notamment, avoir les entrées contrôlées par leur propre daemon, au lieu d'avoir le WM qui fait tout: son job, c'est les fenêtres, par les raccourcis clavier, après tout.
Mais bon, je comprend que des gens qui ont autre chose a faire ne s'amusent pas avec ça :) (sur un bureau, du moins)