当我过去killall -9 name
杀死一个程序时,状态变成僵尸。几分钟后,它真的停止了。那么,在那几分钟里发生了什么?
我不能irq/${nnn}-nvidia
被kill -9
或杀死pkill -f -9
。有没有人如何杀死或停止这些过程?
(如果相关的话,我使用的是 Ubuntu 16.04。)
当类 Unix 系统正常关闭时,例如使用halt
、等或 GUI 等效项,它将首先尝试通过向所有进程发出 SIGTERM 信号来优雅地退出它们shutdown
。poweroff
一段时间后,它会向仍在运行的程序发送 SIGKILL。
这个延迟是多长时间?程序需要多少时间才能正常退出?如果系统之间有所不同,我想知道 Ubuntu 服务器的具体默认设置。
编辑:这是 Systemd 90 年代的延迟吗?
我知道进程无法阻止 SIGKILL。
但是有没有一种外部方法可以暂时阻止 SIGKILL 到达(特定)进程?(类似于防火墙丢弃数据包)。
阅读吉尔斯的回答,
SIGHUP 在严厉程度方面与 SIGTERM 大致相同,但它具有特定的作用,因为当用户与终端断开连接时,它会自动发送到终端中运行的应用程序(从词源上讲,因为用户是通过电话线和调制解调器连接的)挂了)。SIGHUP 通常是非自愿的,与必须显式发送的 SIGTERM不同,因此应用程序应尝试在 SIGHUP 上保存其状态。
“必须显式发送的 SIGTERM”中的“显式”是否意味着 SIGTERM 必须最初由进程(而不是内核)通过进程调用发送kill()
?
我想知道 SIGKILL 是否必须显式发送到指定的进程?内核可以隐式向进程发送 SIGKILL 和 SIGTERM 中的任何一个吗?
当操作系统关闭时,内核是否会向正在运行的进程发送一些信号来终止它们?它是什么信号?内核是否隐式发送它?
谢谢。
突然断电和SIGKILL在运行程序上有什么区别?
我们有使用数据库的微服务。我的任务是创建模拟突然断电的自动测试(不是很好的关机,而是在没有 UPS 的情况下拔掉电源)。意图是在重新启动后,我们要验证数据库是否仍然一致等。我计划使用killall -9 microservice_name
. 这个模拟有多好?做一个或另一个更具破坏性吗?我特别担心刷新(或不刷新)文件缓冲区,但也许还有其他区别?
额外问题:当我们与不是实际功率,而是虚拟机的突然杀死相比时会怎样?