linux 一般用systemd作为init
关机时,systemd会转换为shutdown,执行关机流程
会发送所有用户线程TERM信号,并等待90s
之后发送KILL信号
所以一般有90s的优雅关闭时间,一般不会丢数据。
代码
https://github.com/systemd/systemd/blob/main/src/shutdown/shutdown.c#L451
log_info("Sending SIGTERM to remaining processes...");
broadcast_signal(SIGTERM, true, true, arg_timeout);