Shell面试题更新 2026-08-03

如何编写一个 Shell 脚本,以实现对指定进程的持续监控,并在检测到进程未运行时自动将其重新启动?

考察说明

考查候选人对 Shell 脚本编写、进程管理与循环控制的实际能力。

回答思路

  1. 【回答框架 1】核心思路是使用 pgrep 或 ps 命令配合循环来检查进程是否存在。例如,pgrep -f 进程名,需要确保进程名匹配准确。
  2. 【回答框架 2】脚本可以采用死循环,每分钟检查一次,如果进程不存在,则执行启动命令。为避免脚本自身被匹配,进程名应精确或使用排除自身。
  3. 【回答框架 3】提高健壮性:捕获退出信号(如 trap),避免脚本被终止时留下孤儿进程;使用锁文件防止重复启动。
  4. 【回答框架 4】可使用 systemd 或 supervisor 等工具实现更可靠的守护,但本题重点在于 Shell 脚本实现。
  5. 【关键点 1】使用 pgrep -f 结合具体进程名来检查进程存在性。
  6. 【关键点 2】循环内执行检查,若不存在则启动,并记录日志。
  7. 【关键点 3】确保启动命令路径正确,避免因环境变量问题导致失败。
  8. 【易错点 1】进程名匹配不准确,导致重复启动或误判。
  9. 【易错点 2】脚本自身被误判为目标进程,需使用排除参数。
  10. 【易错点 3】启动命令未使用绝对路径,因环境差异导致启动失败。