How systemd stop command actually works

后端 未结 2 858
不知归路
不知归路 2020-12-23 15:53

I am using a systemd service which calls a process when it\'s been \"started\" (e.g.$systemctl start test.service). As per the design, the process stays for ever in a loop,

相关标签:
2条回答
  • 2020-12-23 16:33

    By default, a SIGTERM is sent, followed by 90 seconds of waiting followed by a SIGKILL.

    Killing processes with systemd is very customizable and well-documented.

    I recommend reading all of man systemd.kill as well as reading about ExecStop= in man systemd.service.

    To respond to those signals, refer to the signal handling documentation for the language you are using.

    0 讨论(0)
  • 2020-12-23 16:43

    Does a systemctl stop test.service command send SIGKILL or SIGTERM signal to kill the process? How can i detect a systemctl stop operation from within a process?

    Systemd sends SIGTERM signal to process. In process you have to register signals, which are "catched".

    In process, eg. SIGTERM signal can be registered like this:

    void signal_callback()
    {
        printf("Process is going down\n");
    }
    signal(SIGTERM, signal_callback)
    

    When SIGTERM is sent to process signal_callback() function is executed.

    0 讨论(0)
提交回复
热议问题