ich habe mal ein wenig experimentiert…
shell_exec("service symcon restart");
stoppt symcon, aber nur bis zu diesem punkt
27.01.2024 23:46:47 | 00000 | MESSAGE | ScriptEngine | Warte auf Beendigung aller Skript-Threads...
Klar, das script wird ja ausgeführt. Es gibt kein Zeitlimit mehr, also bleibt es bis zur Ewigkeit
@Paresy, auch nach 5 min…
ein
shell_exec("service symcon restart > /dev/null 2>&1 &");
schubst das ganze in den Hintergrund, symcon beendet sich zwar, aber kann nicht mehr starten
01/27/24 23:49:30 | 00000 | MESSAGE | LocalePool | Removing...
01/27/24 23:49:30 | 00000 | MESSAGE | Kernel | bind: Address already in use
01/27/24 23:49:30 | 00000 | MESSAGE | Kernel | Removing...
01/27/24 23:49:30 | 00000 | SUCCESS | Kernel | *** IPS SHUTDOWN COMPLETE
01/27/24 23:49:30 | 00000 | MESSAGE | TimerPool | Terminating timer thread...
01/27/24 23:49:30 | 00000 | MESSAGE | TimerPool | Removing...
01/27/24 23:49:30 | 00000 | MESSAGE | ScriptEngine | Removing...
01/27/24 23:49:30 | 00000 | MESSAGE | ScriptEngine | Waiting for all script threads to terminate...
Scheinbar wird weiterhin ein Thread belegt, daher klappt das nicht. Auch das ganze in ein externes Script zu packen und aufzurufen schlägt mit obiger Meldung fehl.
Der Trick ist daher, das ganze zeitgesteuert auszuführen, dazu musst Du
apt install at
nachinstallieren. Dein Script muss nun so aussehen
shell_exec("echo \"service symcon restart\" | at now");
at ist ein wenig komisch, du musst dein Befehl in ein echo packen und über die pipe schicken. Nun sorgt der at dafür das „service symcon restart“ ausgeführt wird, in seinem eigenem Handle…