某个进程突然卡死,结束进程的解决方案可以是ctrl+alt+esc调出系统监视器后右键结束对应进程,但Linux系统管理员更喜欢使用kill -9 PID命令杀死进程,这两者是否有区别,我们通过日志进行分析。
kill -9命令行方式:
通过分析syslog日志对比两者之间的差异: - <b><span style="font-family: "Microsoft YaHei"; font-size: medium; white-space: normal;">系统监视器方式</span><br></b>
复制代码- 2021-10-05 12:44:58 langchao-PC startdde[3833]: startmanager.go:732: [/bin/sh -c export GIO_LAUNCHED_DESKTOP_FILE_PID=$$;exec deepin-home-appstore-client]: signal: terminated
- 2021-10-05 12:44:58 langchao-PC startdde[3833]: startmanager.go:624: send closeapp message, app info /usr/share/applications/deepin-app-store.desktop/应用商店/deepin-app-store
- <br>
复制代码- <b>kill -9方式
- </b>2021-10-05 12:47:41 langchao-PC startdde[3833]: startmanager.go:732: [/bin/sh -c export GIO_LAUNCHED_DESKTOP_FILE_PID=$$;exec deepin-home-appstore-client]: signal: killed
- 2021-10-05 12:47:41 langchao-PC startdde[3833]: startmanager.go:624: send closeapp message, app info /usr/share/applications/deepin-app-store.desktop/应用商店/deepin-app-store
复制代码
前者发送的signal: terminated,后者是signal: killed
前者系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情 1、程序立刻停止
2、当程序释放相应资源后再停止 3、程序可能仍然继续运行 大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以配置的。如果程序正在等待IO,可能就不会立马做出相应。也就是说,SIGTERM多半是会被阻塞的、忽略,即系统监视器结束进程的方式比较“温柔”。
后者:多半admin会用这个命令,用来强制尽快终止一个进程。(相当于系统监视器的“强制结束进程”)
附Linux signals:
|