我安装了 sphinx_search 并与其关联了一个 pid_file。当我使用命令“searchd”从 shell 启动进程时,该进程会获取 pid_file 中提到的 PID。现在,我编写了一个 bash 脚本,用于检查进程是否正在运行,如果没有,则使用“searchd”命令启动进程。但是,该进程没有获取 pid_file 中提到的 PID。为什么会这样?
答案1
为什么任何地方都会提到任何进程“获取 PID”?
进程 ID 是由内核在进程分叉时分配的;任何其他因素都不会影响 PID 的实际值。
答案2
pid_file
您的 sphinx 配置文件的 searchd 块中是否有指令?
该 shell 脚本是否违反了 searchd 指令,或者您是否试图在 shell 脚本中推导出 pid?
此外,您无需编写自己的 shell 脚本来保持 sphinx 正常运行,而是可以使用类似monit
或 Upstart(在 Ubuntu 上)的工具来实现这一点。这将是一个更“标准”的解决方案,而不是自制的解决方案。