测验:进程与信号
应用程序捕获 SIGTERM 并进行一些清理。当这个应用程序被 SIGKILL 杀死时,清理代码是什么?
- 它不运行。 SIGKILL 无法被捕获或忽略。
- 如果注册了处理程序,也会执行 SIGKILL。
- 而是调用 SIGTERM 处理程序
- 内核在给予宽限期后执行。
我的 ps 列表中堆积了数千个 Z 状态进程。最准确的解释是什么?
- 它消耗大量内存,因此需要立即杀死-9。
- 该过程陷入无限循环。
- 这是一个无法脱离状态D的进程。
- 该进程已经死了,只有PID被占用,因为父进程没有等待。
我在Dockerfile中编写了CMD myapp。当你停止 docker 时会发生什么?
- 应用程序立即收到 SIGKILL
- /bin/sh 变为 PID 1 并接收 SIGTERM,但不会将其传递给应用程序。
- SIGHUP 被传递,而不是 SIGTERM
- 容器继续运行而不被终止
我在 CI 日志中看到退出代码 143。这是什么意思?
- 由于配置错误而终止
- 由于内存不足而被 OOM Killer 杀死
- 以 SIGTERM(15) 结束。因为 128 + 15
- 143 次测试失败
即使我发送了kill -9,该过程也不会消失。 ps的状态是D,怎么办?
- 多次发送kill -9
- 先杀掉父进程
- 检查它为什么在内核中等待(存储、NFS 等)
- 提高 oom_score_adj
在脚本中运行 pkill -f app 之前我必须做什么?
- 首先使用相同的模式运行 pgrep -a -f 来检查目标列表。
- 使用 sudo 提升权限
- 使用kill -0 检查进程是否存在
- 用确切的名称而不是正则表达式替换模式