Wunsch IPSymcon neu starten

Hallo @paresy das mit dem exec("reboot"); funktioniert mit der SymBox.

Aber man sollte wissen, dass hier die letzten Änderungen am System verloren gehen, weil alle Änderungen im Objektbaum erstmal nur im RAM abgelegt werden um den Flash-Speicher nicht mit zu vielen Schreibzyklen zu belasten. Alle 10min werden diese dann in den Speicher geschrieben.

Ich hatte diese Woche dazu auch schon mit eurem Support telefoniert und da wurde mir gesagt, dass ich vor einem Neustart ein exec("sync"); machen soll damit die Änderungen in den Speicher geschrieben werden. Das habe ich nun gemacht, habe anschließend auch 2s gewartet, hat aber leider nicht funktioniert :frowning:

exec("sync");
sleep(2);
exec("reboot");

Die Frage ist nun, hätte es eigentlich funktionieren sollen? Mache ich noch etwas falsch? Oder gibt es evtl. sogar einen IPS_Reboot() Befehl, der das alles sauber erledigt?

Nein, „sync“ reicht nicht. Du willst Symcon sauber runterfahren. Dies sollte über „/etc/init.d/S90symcon stop“ möglich sein. Dann würde ich mal 5 Sekunden warten (oder mal schauen wie lange bei dir bei Symcon ein normaler Shutdown dauert) und dann „sync“ + „reboot“ anwerfen. Das ist, was das SymOS intern macht.

paresy

@paresy impliziert deine o.s. Aussage, dass ein systemctl stop symcon (bzw. der damit referenzierte ‚legacy‘ Stopscript) dem OS nicht sauber mitteilt, dass er noch Zeit braucht und das OS vorher schon abschaltet?

Also so:

exec(„/etc/init.d/S90symcon stop“); 
sleep(5);
exec("sync");
sleep(2);
exec("reboot");

P.S. Ich wüsste jetzt nicht, wie ich sehen kann, wie lange ein Shutdown dauert. Geht vermutlich nur, wenn ich mich über Putty mit der SymBox verbinde und den Befehl ausführe?

Die Befehle nach dem Stop von Symcon werden aber dann trotzdem noch ausgeführt auch wenn Symcon nicht mehr läuft? Sorry ich bin leider nicht so fit bei so Linux Systemsachen :see_no_evil_monkey:

Du hast recht… Das wird so nichts. Symcon wird auch nicht sauber stoppen, weil das Skript ja noch läuft. Vermutlich muss man die Sequenz in eine sh Datei schreiben und diese dann abgesetzt starten. Ich muss da noch mal drüber nachdenken.

paresy

Ich habe bei mir via cron ein watchdog zu laufen - könnte man das nicht in Kombination nutzen?

Idee:

  • symcon schreibt per Script etwas in eine bestimmte Datei oder legt was im OS an
  • der cronjob schaut ob das dann existiert
  • und startet ein etsprechenden restart Vorgang

Ginge es so?

PS: bei mir schaut der cron job sogar nochmal nach um nicht in ein „Gleichzeitigproblem zu laufen“!

1 „Gefällt mir“

Könnte man, hat ein gewisser @pitti mal gebaut vor vielen Jahren

Läuft bei mir ebenfalls, hat aber auch das Potential für Boot-Loops und ist UX lastig.

Mit Certwarden habe ich die Erneuerung meiner Zertifikate automatisieren koennen. Das einzige was zur Zeit nicht automatisiert funktioniert ist der Symcon neustart um das neue Zertifikat zu aktivieren.

Daher ist die Diskussion hier schon sehr interessant bzw. wichtig. Ich nutze einen Docker Container unter QNAP. Falls jemand einen guten Vorschlag hat waere das sehr hilfreich fuer mich

@paresy kann man das Symcon Zertifikat (sprich ja im Grunde ‚nur den Port 3777 Webserver‘) nicht genauso wie andere Sockets vom Kernsystem abspalten und separat neuladen? Ein Produktivsystem mit Workload alle 47 Tage (neue Zertifikatsrichtlinie) neuzustarten, ist irgendwie auch doof.

1 „Gefällt mir“

Ggf. reicht es den Prozess vom aktuellen Vaterprozess abzukoppeln mit nohup.

Könnte (ungetestet) so aussehen:
exec('nohup reboot');