我想编写一个脚本,在两个不同的目录中启动两个守护进程。此脚本应在前台运行,然后当我按 ctrl-c 时,脚本将退出并关闭两个守护进程。
假设两个守护进程是两个名为daemon1
和 的可执行文件daemon2
,它们分别需要启动的两个目录是dir1
和dir2
。
我该如何编写这样的脚本?
答案1
您可能需要查找适用于您的操作环境的脚本语言。如果这是类似 korn-shell 的东西,您可能会考虑捕获信号、在后台执行进程并查看最后一个 PID,以确定在捕获 SIG-INT 或类似内容时要终止什么。
编辑:更多细节
- 在顶部,捕获 SIG INT 和 SIG HUP,让它们运行清理子程序
- 当您启动每个守护进程时,将其置于后台,捕获其 PID 并将其推送到包装器脚本中的变量中。
- 定期检查你的后台进程是否仍在运行。
- 如果不是,请重新启动失败的程序并记录您所做的操作。
- 让你的清理子程序检查每个 PID 是否对应一个活动的、正在运行的进程。
- 如果确实如此,请终止 -9 该进程,并记录您执行的操作。
- 如果没有,则取消定义该变量并记录您未找到预期的进程。