Shutdown - Messages unter Linux?

Shutdown - Messages unter Linux?

Beitragvon Timm Thaler » 18. Aug 2018, 01:00 Shutdown - Messages unter Linux?

Sendet Linux beim Shutsdown oder beim Beenden (nicht Kill) im Taskmanager eine Message an Kommandozeilen-Programme, und wie kann ich diese auswerten?

Ich habe eine Abfrage auf Ctrl-C, und dann wird ein Logeintrag geschrieben und das Programm wird ordentlich beendet. Starte ich das Programm allerdings per cron, komme ich ja nicht per Ctrl-C an das Programm, kann es aber im Taskmanager oder beim Shutdown / Reboot beeden. Dabei wird es aber abrupt unterbrochen und kein Logeintrag geschrieben.
Timm Thaler
 
Beiträge: 733
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon theo » 18. Aug 2018, 08:32 Re: Shutdown - Messages unter Linux?

Man könnte das Signal auswerten. z.B. SIGHUP oder SIGTERM.

https://www.freepascal.org/docs-html/rt ... ction.html
theo
 
Beiträge: 8071
Registriert: 11. Sep 2006, 18:01

Beitragvon Warf » 18. Aug 2018, 12:58 Re: Shutdown - Messages unter Linux?

theo hat geschrieben:Man könnte das Signal auswerten. z.B. SIGHUP oder SIGTERM.

https://www.freepascal.org/docs-html/rt ... ction.html


Genau so würde ich es auch machen. Es gibt verschiedene Signale in POSIX, die für dich relevant sind. SIGINT - Interrupt, wird ausgelöst wenn STRG+C in der Konsole gedrückt wird. SIGHUP - Hang Up wird gesendet wenn das Terminal welches dem Programm zugeordnet wird geschlossen wird. SIGTERM - Terminate ist eine Anfrage das Programm nett zu beenden und SIGKILL - Kill um das Programm ohne widerrede zu killen. Ein SIGKILL kann man daher auch nicht handeln oder ignorieren. Wenn das kommt wird der Prozess ohne reaktionsmöglichkeit gekillt.
Der Taskmanager sollte normalerweise ein SIGTERM senden, und nur wenn dein Programm nicht reagiert dann mit einem SIGKILL den shutdown enforcen (sigkill entspricht also windows Sofort beenden button wenn ein Programm nicht reagiert), also solltest du SIGHUP, SIGINT und SIGTERM handeln
Warf
 
Beiträge: 991
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Timm Thaler » 18. Aug 2018, 14:10 Re: Shutdown - Messages unter Linux?

Und dazu muss ich, wenn ich es richtig verstanden habe, zwingend eine Hookup-Procedure (heisst das unter Linux auch so?) mit den SigActionHandler verbinden? Eine "einfache" Abfrage in der Hauptschleife geht nicht?

Ist ja irgendwie auch logisch, wenn das Progamm irgendwo wartet, muss es trotzdem auf die Sigs reagieren...

Was bekomme ich, wenn Linux rebootet, ein Sigterm oder ein Sighup?

Und wie lange habe ich dann üblicherweise, um das zu verarbeiten? Reicht die Zeit, um noch einen Eintrag ins Logfile zu schreiben, ohne dass es mir die Datei zerschießt? Oder eine Message per Telegram rauszuschicken, dass der Bot beendet wird, was durchaus 300msec dauern kann?

Denn sonst kann ich mir das gleich sparen...
Timm Thaler
 
Beiträge: 733
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon theo » 18. Aug 2018, 14:29 Re: Shutdown - Messages unter Linux?

Die Zeit sollte reichen (10 - 90 sec. von SIGTERM bis SIGKILL), das ist aber afaik nicht standardisiert.
Ich würde mal SIGTERM nehmen. Das müsste mind. theoretisch das richtige Signal sein.
Vielleicht kannst du auf SIGHUP zusätzlich horchen.
theo
 
Beiträge: 8071
Registriert: 11. Sep 2006, 18:01

Beitragvon Timm Thaler » 18. Aug 2018, 14:34 Re: Shutdown - Messages unter Linux?

Um auf Ctrl-C zu reagieren, brauche ich Sigint, was ja aber wahrscheinlich jede Nachricht weiterschickt. Kann ich dann einfach mit Keypressed und Readkey auf Ctrl-C prüfen, so wie ich es jetzt schon mache? Ist ja eh nur für den Fall, dass das Programm zum Testen in der Konsole läuft und nicht per cron gestartet wurde.
Timm Thaler
 
Beiträge: 733
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Warf » 18. Aug 2018, 17:30 Re: Shutdown - Messages unter Linux?

Timm Thaler hat geschrieben:Um auf Ctrl-C zu reagieren, brauche ich Sigint, was ja aber wahrscheinlich jede Nachricht weiterschickt. Kann ich dann einfach mit Keypressed und Readkey auf Ctrl-C prüfen, so wie ich es jetzt schon mache? Ist ja eh nur für den Fall, dass das Programm zum Testen in der Konsole läuft und nicht per cron gestartet wurde.


Das SigTerm kann auch von anderen Programmen gesendet werden, dann würde den Programm auch einfach beenden
Warf
 
Beiträge: 991
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried