首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >systemd stop命令的实际工作原理

systemd stop命令的实际工作原理
EN

Stack Overflow用户
提问于 2017-03-23 22:04:07
回答 2查看 55.5K关注 0票数 76

我使用的是一个systemd服务,它在进程“启动”时调用它(例如$systemctl start test.service)。根据设计,进程永远处于循环中,我们可以使用'ps‘命令查看进程的存在。我们还看到,由于systemctl stop命令,进程正在被终止(正如预期的那样)。然而,我们的要求是,我们希望在进程被终止之前从进程中执行一些安全的关闭操作。但我不确定如何从进程内部检测systemd stop操作。

systemctl stop test.service命令是否发送SIGKILL或SIGTERM信号来终止进程?如何从进程内部检测systemctl停止操作?

EN

回答 2

Stack Overflow用户

发布于 2017-03-23 22:37:44

默认情况下,发送SIGTERM,然后等待90秒,然后发送SIGKILL。

使用systemd终止进程是非常可定制的,并且有很好的文档记录。

我建议你在阅读ExecStop= in man systemd.service的同时阅读man systemd.kill的全部内容。

要响应这些信号,请参阅您使用的语言的信号处理文档。

票数 119
EN

Stack Overflow用户

发布于 2020-04-20 15:18:38

系统停止test.service命令是否发送SIGKILL或SIGTERM信号来终止进程?如何从进程内部检测systemctl停止操作?

Systemd向进程发送SIGTERM信号。在处理过程中,你必须注册信号,这些信号是“捕获”的。

在过程中,例如。SIGTERM信号可按如下方式注册:

代码语言:javascript
运行
复制
void signal_callback()
{
    printf("Process is going down\n");
}
signal(SIGTERM, signal_callback)

当SIGTERM被发送到进程时,将执行signal_callback()函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42978358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档