cronjob @reboot als Prozess gestarted führt aber nicht aus

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
craft4fun
Beiträge: 2
Registriert: 20.12.2022 14:50:35
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

cronjob @reboot als Prozess gestarted führt aber nicht aus

Beitrag von craft4fun » 20.12.2022 15:03:44

Hallo Zusammen,

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
Ich habe auch unzählige Varianten dazu ausprobiert, wo die Ausgabe umgeleitet, eine davon so

Code: Alles auswählen

@reboot /root/shutdownDetection.sh &> /tmp/errors
Das dazugehörige Script sieht so aus:

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
Grundsätzlich wird das Script auch aufgerufen und ist bspw. in htop als Prozess sichtbar. Aber er funktioniert nicht.

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

Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

Re: cronjob @reboot als Prozess gestarted führt aber nicht aus

Beitrag von oln » 20.12.2022 15:36:12

Moin,
cron schickt eine Mail mit dem Fehler bei einer Ausgabe. Hast du Mail eingerichtet?
Wenn nicht, dann schreib doch die Ausgabe in eine Datei. Dann kannst du sehen wo das Problem liegt.
Bsp.:

Code: Alles auswählen

@reboot /root/shutdownDetection.sh > /root/shutdownDetection.sh.log 2>&1
Gruß Ole
AbuseIPDB

mat6937
Beiträge: 2927
Registriert: 09.12.2014 10:44:00

Re: cronjob @reboot als Prozess gestarted führt aber nicht aus

Beitrag von mat6937 » 20.12.2022 16:13:08

craft4fun hat geschrieben: ↑ zum Beitrag ↑
20.12.2022 15:03:44
(Sowie ich verstanden habe, ist das eine modernere Alternative zu einem Eintrag in /etc/rc.local)
Noch moderner wäre eine deaktivierte service-unit (zum starten deines Scriptes), die mit einer timer-unit, 30 Sekunden nach erfolgtem erfolgreichem Booten gestartet wird. In der service-unit kannst Du auch die erforderlichen Abhängigkeiten/Ressourcen/Umgebungsvariablen/,,, setzen.

craft4fun
Beiträge: 2
Registriert: 20.12.2022 14:50:35
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: cronjob @reboot als Prozess gestarted führt aber nicht aus

Beitrag von craft4fun » 20.12.2022 18:08:07

oln hat geschrieben: ↑ zum Beitrag ↑
20.12.2022 15:36:12
Moin,
cron schickt eine Mail mit dem Fehler bei einer Ausgabe. Hast du Mail eingerichtet?
Wenn nicht, dann schreib doch die Ausgabe in eine Datei. Dann kannst du sehen wo das Problem liegt.
Bsp.:

Code: Alles auswählen

@reboot /root/shutdownDetection.sh > /root/shutdownDetection.sh.log 2>&1
Mail hatte ich tatsächlich nicht eingerichtet, aber die Umleitung in das Log brachte die simple Erkenntnis:

shutdown command not found. Ich habe nun /sbin/shutdown in das Script eingebaut und nun funktioniert es.

Ich hatte zuvor auch schon versucht die Ausgabe in einer Datei umzuleiten, aber das wohl nicht richtig gemacht - das log blieb immer leer.

Vielen Dank auf jeden Fall!!!

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: cronjob @reboot als Prozess gestarted führt aber nicht aus

Beitrag von nudgegoonies » 21.12.2022 12:00:11

Ich würde die Ausgabe in den logger umleiten. Der stammt aus dem Paket bsdutils was essenziell ist, ergo sowieso überall installiert ist. Damit kann man die Ausgabe mit Angabe eines Namens direkt ins syslog umleiten.
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Antworten