ich habe als root mittels crontab -e einen Cronjob angelegt, der nach dem Booten des Systems gestartet werden soll.
(Sowie ich verstanden habe, ist das eine modernere Alternative zu einem Eintrag in /etc/rc.local)
Der Eintrag sieht so aus:
Code: Alles auswählen
@reboot /root/shutdownDetection.sh
Code: Alles auswählen
@reboot /root/shutdownDetection.sh &> /tmp/errors
Code: Alles auswählen
#!/bin/bash
# This script (shutdownDetection.sh) is required to shutdown the host system from inside the piMoo docker container.
# Requires "apt install inotify-tools" on the host machine.
# Copy it to host systems /root/ path, make it executable with chmod +x and trigger it like this after reboot:
# crontab -e
# @reboot /root/shutdownDetection.sh
if [ ! -x "$(command -v inotifywait)" ]; then
echo 'inotify not found, please install with: apt install inotify-tools' >&2
exit 1
fi
while true; do
inotifywait -e modify /var/lib/docker/volumes/vol-pimoo/_data/PIPE/shutdown && \
docker container stop pimoo && \
shutdown -h now;
sleep 2
done
Wenn ich das Script manuell als root aufrufe funktioniert es, nur eben nicht, wenn es als cronjob / @reboot gestartet wird.
Kann es sein, dass cron erkennt, dass in einer @reboot Anweisung ein shutdown ausgeführt werden soll und es deswegen blockiert.
Ich bin ziemlich ratlos und wäre für Denkanstöße dankbar.
Grüße
Patrick