#1 Le 08/12/2021, à 13:40
- denis.beurive
Comment débugger un script sous "/etc/init.d" ?
Bonjour à tous,
Je suspecte une erreur dans le script suivant :
/etc/init.d/rng-tools
En bref, la structure de ce script est la suivante :
DESC="Hardware random number generator entropy gatherer daemon"
...
[ -r /etc/default/rng-tools ] && . /etc/default/rng-tools
...
. /lib/lsb/init-functions
...
start)
log_daemon_msg "Starting $DESC" "$NAME"
if ! finddevice; then
log_end_msg 1 "no hardware RNG device found"
exit 1
fi
START="${START} -- -r ${HRNGDEVICE} ${RNGDOPTIONS}"
if start-stop-daemon ${START} >/dev/null 2>&1 ; then
echo "${NAME}."
log_end_msg 0
elif start-stop-daemon --test ${START} >/dev/null 2>&1; then
log_end_msg 1
exit 1
else
log_end_msg "already running."
fi
;;
Je m'attends à ce que la chaîne de caractères ci-dessous soit écrite quelque part (à la console ou dans un fichier de LOG) :
"Starting $DESC"
Cette chaîne n'est pas affichée à la console.
J'ai effectué des recherches dans tous les fichiers de LOG archivés sous le répertoire "/var/log".
$ DESC="Hardware random"
$ pwd
/var/log
$ sudo grep -R "${DESC}" *.log
[sudo] Mot de passe de denis :
auth.log:Dec 8 17:12:44 labo sudo: denis : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/usr/bin/grep -R Hardware random number generator entropy gatherer daemon alternatives.log apport.log auth.log boot.log bootstrap.log dpkg.log fontconfig.log gpu-manager.log kern.log ubuntu-advantage.log
Veuillez noter que:
Le script est exécuté jusqu'au chargement du fichier ci-dessous (100% certain):
/lib/lsb/init-functions
Je peux dire que le service est bien lancé:
systemctl status rng-tools
● rng-tools.service - Add entropy to /dev/random 's pool a hardware RNG
Loaded: loaded (/lib/systemd/system/rng-tools.service; enabled; vendor preset>
Active: active (running) since Wed 2021-12-08 11:46:20 CET; 42min ago
Main PID: 763 (rngd)
Tasks: 1 (limit: 18478)
Memory: 312.0K
CPU: 16ms
CGroup: /system.slice/rng-tools.service
└─763 /usr/sbin/rngd -r /dev/hwrng -f
déc. 08 11:46:20 labo systemd[1]: Started Add entropy to /dev/random 's pool a har>
déc. 08 11:46:20 labo rngd[763]: read error
déc. 08 11:46:20 labo rngd[763]: read error
Par conséquent, la section "start" est bien exécutée. Mais, alors, pourquoi ne vois-je pas la chaîne de caractères "Starting Hardware random number" ?
Je suis certain à 100% que le fichier ci-dessous est chargé:
/etc/default/rng-tools
Mais, même si la valeur de la variable HRNGDEVICE est correcte (extraite du fichier de configuration: /dev/ttyACM0), la valeur réllement utilisée n'est pas la bonne (/dev/hwrng) !!!
Details ici : https://github.com/denis-beurive/onerng-notes#problem
J'ai essayé d'utiliser la fonction ci-dessous pour ajouter des messages de DEBUG:
log_daemon_msg
Résultat : rien. Aucun message n'est affiché nulle part (console, fichiers de LOG...) !!!
J'ai essayé de créer des "fichiers témoins" (avec touch), mais ces derniers ne sont pas créés. Pourtant, le service est lancé, ce qui signifie qu'il n'y a pas d'erreur d'exécution (set -e) !!!
Un vrai mystère !!!
Question : comment debugger un script sous /etc/init/d ?
Merci
Denis
Dernière modification par denis.beurive (Le 08/12/2021, à 18:28)
Hors ligne
#2 Le 08/12/2021, à 14:58
- bruno
Re : Comment débugger un script sous "/etc/init.d" ?
Modération : la langue du forum et le français. Merci de modifier ton message et son titre.
Attention, les bouteilles vendues par Nestlé Waters sont contaminées au monoxyde de dihydrogène.
Hors ligne