TrueNAS Community 25.10.3.1 | Cron Shutdown will nicht

RolandR88

Lieutenant
Registriert
Jan. 2007
Beiträge
806
Hallo Leute,

ich versuche seit Monaten ein Cronjob für den täglichen Shutdown meines Homeservers hinzubekommen.
Es läuft TrueNAS Community 25.10.3.1 und versucht habe ich schon:
  • /sbin/shutdown -h now
  • /sbin/shutdown -p now
  • /sbin/poweroff
  • systemctl poweroff
  • midclt call system.shutdown
  • /usr/bin/midclt call system.shutdown
  • midclt call system.shutdown "schlussjetzt"
  • /usr/bin/midclt call system.Shutdown"schlussjetzt"

Egal was ich versuche. Die Commands funktionieren solange ich angemeldet bin bzw. eine user session da ist (+3 Minuten als Test).
Aber sobald ich dann 01:00 Uhr in der Früh eingebe (es kommt dann ein Wake aus dem BIOS am Folgetag) dann passiert nichts bzw. im besten Fall startet sich der NAS sofort wieder.

Kann mir da jemand helfen?
Vielen Dank im Voraus!
 
Das war bei mir auch ein endloses Gefrickel, auch um Wake on Lan zum laufen zu bekommen. Shutdown hat meine ich mit
Code:
su /usr/bin/midclt call system.shutdown
hat es geklappt.Du musst es als root ausführen.
 
Zuletzt bearbeitet:
RolandR88 schrieb:
/sbin/shutdown -h now
Hast Du mal geschaut, ob der Befehl shutdown überhaupt in dem Pfad ist?
Ich würde mal denken, der ist eher unter /usr/sbin/

Ein Posting im TrueNAS-Forum stützt diese Vermutung.

Genereller Tipp:
Wenn man sich nicht sicher ist, in welchem Pfad ein Programm ist, kann man das Kommandozeilentool which benutzen.
Beispiel: which shutdown

RolandR88 schrieb:
Die Commands funktionieren solange ich angemeldet bin
Ein häufiges Problem ist, das man im Login-Environment die Umgebungsvariable PATH umfangreicher ist als bei CRON bzw Ausführung des CRON-Jobs.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Banned
DFFVB schrieb:
Das war bei mir auch ein endloses Gefrickel, auch um Wake on Lan zum laufen zu bekommen. Shutdown hat meine ich mit
Code:
su /usr/bin/midclt call system.shutdown
hat es geklappt.Du musst es als root ausführen.
Danke, das hatte ich noch nicht. Ist eingestellt. Mal sehen was heute Nacht passt. Vielen Dank!
Blutomen schrieb:
Schonmal mit Log probiert?
Dann kannst ja sehen was los ist und warum der Befehl nicht lief.
Ja, hilft aber nur bedingt, weil bei einigen Konstellationen der shutdown akzeptiert wird, nur der NAS dann sofort wieder bootet.
 
andy_m4 schrieb:
Hast Du mal geschaut, ob der Befehl shutdown überhaupt in dem Pfad ist?
Ich würde mal denken, der ist eher unter /usr/sbin/

Ein Posting im TrueNAS-Forum stützt diese Vermutung.

Genereller Tipp:
Wenn man sich nicht sicher ist, in welchem Pfad ein Programm ist, kann man das Kommandozeilentool which benutzen.
Beispiel: which shutdown


Ein häufiges Problem ist, das man im Login-Environment die Umgebungsvariable PATH umfangreicher ist als bei CRON bzw Ausführung des CRON-Jobs.
Also, ich habe jetzt noch versucht:
which shutdown
/usr/sbin/shutdown

Darauf basierend wäre der CMD
Code:
/usr/bin/midclt call system.shutdown "Cron Shutdown"
Test funktioniert, aber dann, scheinbar sobald eine aktive Session endet, passiert nichts:
1779383509656.png


@DFFVB deinen CMD kann ich nicht ausführen, wenn ich ihn in CronJobs unter Advanced Settings eingebe. Vielleicht unter crontab?
Code:
su /usr/bin/midclt call system.shutdown
1779383672572.png


Vielleicht via crontab?
1779383909409.png
 
Zuletzt bearbeitet:
Danke @andy_m4 hat aber leider auch nicht funktioniert.
Heute Nacht war ein Shutdown der im Log angezeigt wird, aber der Server läuft einfach weiter:

Code:
0 1 * * * /usr/bin/midclt call system.shutdown "work is done"
1779427799311.png


Code:
/usr/sbin/shutdown -P
now unter Cronjobs in Advanced Settings wirkt überhaupt nicht. Ich habe jetzt noch versucht den CMD direkt in crontab einzutragen...
 
@andy_m4 Die Alternative wäre für mich in TrueNAS unter Advanced > CronJobs.
Habe es direkt in crontab eingetragen, aber es passiert leider nichts. Kein Eintrag im Audit/Log, habs grad nochmals versucht.
Bildschirmfoto 2026-05-23 um 09.11.02.png

Edit: Ich glaube das Problem ist, dass ich als truenas_admin keinen Cmd als Root ausführen kann.
Edit2: Problem ist gelöst. Ich hatte jeweils ohne sudo -i in den crontab geschrieben, damit wurden credentials gefordert. jetzt läufts mit 0 1 * * * /usr/bin/systemctl poweroff
 
Zuletzt bearbeitet:
@RolandR88 Ich glaube, was ich damals auch mal getestet hab: Ein Post-Init script, dass den Rechne reinfach in x Sekunden wieder runterfährt...
 
Also das Thema ist echt einfach komplett frustrierend.

Wie geplant führt er den CMD um 01:00 Uhr aus - aber es passiert einfach nichts... die Kiste läuft einfach weiter.

Code:
Success: True
Audit Msg ID Str: audit(1779750001.529:453)
Proctitle: /usr/bin/systemctl poweroff
Syscall:
  Success: True
  Exit: 0
  Ppid: 586229
  Pid: 586230
  Auid: root
  Uid: root
  Gid: root
  Euid: 0
  Suid: 0
  Fsuid: 0
  Egid: 0
  Sgid: 0
  Fsgid: 0
  Tty: Null
  Ses: 30
  Key: escalation
  Syscall: execve
Cwd: /root
Paths:
  - Name: /usr/bin/systemctl
    Inode: 1210
    Dev: '00:23'
    Mode: '0100755'
    Ouid: 0
    Ogid: 0
    Rdev: '00:00'
  - Name: /usr/bin/systemctl
    Inode: 1210
    Dev: '00:23'
    Mode: '0100755'
    Ouid: 0
    Ogid: 0
    Rdev: '00:00'
  - Name: /lib64/ld-linux-x86-64.so.2
    Inode: 45412
    Dev: '00:23'
    Mode: '0100755'
    Ouid: 0
    Ogid: 0
    Rdev: '00:00'
Raw Lines: Null

Ich teste jetzt einfach mal alles was ich irgendwo zusammensuchen kann:

Code:
# m h  dom mon dow   command
1 1 * * * /usr/bin/midclt call system.shutdown "daily shutdown with user bin“
2 1 * * * midclt call system.shutdown "daily shut no user bin"
3 1 * * * root poweroff
4 1 * * * root /usr/bin/midclt call system.shutdown "daily shutdown with user bin root“
5 1 * * * root midclt call system.shutdown "daily shut no user bin root"
 
Ich hatte das in Vergangenheit auch mal eingerichtet und es hatte recht einfach funktioniert.
Ich erinnere mich aber dunkel, wartet das System nicht noch auf einen Input fürs Log? Also wenn du das System über das GUI runterfährst kommt ja immer das Dropdown mit der Auswahl (Maintenance, Power Outage, etc).
Aber seit ich mein DXP4800 Plus habe läuft das auch 24/7. War bei mir eine alte Office Möhre. Im Bios war der Start für 7:00Uhr eingestellt und um 23:00Uhr ist das ganze ausgegangen. Das war alles recht easy🤔

Ich glaube sogar damit:
RolandR88 schrieb:
Code:
/usr/sbin/shutdown -P

Hats heute Nacht denn funktioniert?
 
Nein, erschreckenderweise hat nichts von den ganzen crontab Einträgen wirklich gezogen.
Die Middleware sagt
Success: True
Reason: daily shut no user bin
das Thema hatte ich schonmal, aber da erfolgt kein Shutdown, sondern mehr oder weniger ein Logout/Login.
Um 01:01 sowie 01:02 logged root jeweils einen Login mit
Proctitle: /usr/sbin/CRON -f
Ich bin hier echt restlos ratlos, warum das nicht funktionieren will :/
 
Versuch mal ein post init Script mit shutdown in X Sekunden
 
Das hat leider funktioniert. Ich habe mir gedacht, dass ein Test mit 120 Sekunden locker reicht. Leider startet der Countdown scheinbar beim Poweron... jetzt schaltet sich der NAS während des Boot wieder aus...
 
  • Gefällt mir
Reaktionen: DFFVB
Verdammt. Aber es funktioniert 🤓
 
Ja, es funktioniert, aber wie ich das jetzt wieder lösen kann... Versuche es grad über die Version 25.10.1 zu umgehen.
Edit1: über ein altes Enviroment wieder drinnen und jetzt 68.400 Sekunden gesetzt.
Edit2: Oh mein Gott. Jetzt habe ich wieder das Update auf die aktuelle Version gemacht und damit scheinbar wieder das alte Script aktiviert... darf doch nicht wahr sein
Edit3: Nach dem update haben jetzt alle 3 Versionen das Script mit den 120 Sekunden aktiv...
Edit4: Ich habe mit dem USB-Boot Stick mittlerweile die betreffende Partition "boot-pool" nach "/mnt/bootfix" mounten können, aber jetzt komme ich nicht mehr weiter
Edit5: Ich bin via USB-Bootstick im SSH. Der relevante boot-pool ist bereits gemountet nach /mnt/bootfix. Wie kann ich nun das Script löschen oder ändern?
Edit6: Ich konnte mit /init/bash nun die db finden sqlite3 /data/freenas-v1.db, jetzt suche ich noch die richtige Tabelle. Gefunden: Die Tabelle heißt "tasks_initshutdown"
Geöscht mit DELETE FROM tasks_initshutdown UND dann in der Zeile die kommt WHERE id = 1;
Edit7: Nach dem Verlassen von squlite mit .quit und einem "reboot" hat der NAS eine panic bekommen und hat nicht mehr gebootet. Ich habe ihn kurz stromlos gemacht. Nun kann ich im GRUB Menü wieder auswählen und der Boot läuft und ich bekomme die Console via HDMI und der NAS ist gerettet.
@DFFVB irgendwie bin ich sauer und irgendwie extrem happy, dass ich jetzt lernen konnte wie ich via CLI die DB meiner NAS anpassen kann :) DANKE, nur einen automatischen Shutdown habe ich jetzt noch immer nicht...
 
Zuletzt bearbeitet:
Brudi ich fühle mit dir, kenn das zu gut, wie du das Script wieder rausbekommst weiß ich auch nicht, aber vlt mal im TrueNAS Forum fragen?
 
Da bekomme ich ja Schweißausbrüche nur vom mitlesen xD
Gut, dass es wieder läuft 👍
 

Ähnliche Themen

Zurück
Oben