我正在编写一个Bash脚本来监视进程并检测它何时崩溃。为此,我正在监视/ proc目录;
start_my_process;
my_process_id=$!;
until [[ ! -d "/proc/$my_process_pid" ]]; do
# alert the process is dead and restart it...
done
在Bash完成执行命令以启动进程之前,是否可以保证在/ proc /中创建进程的条目?或者有可能在执行上面的检查时,可能还没有创建start_my_process的条目?
修改 最后,我实际上违反了自定义解决方案并选择了monit,这是一个出色的监视工具。
答案 0 :(得分:4)
/proc/<pid>
。它不是一个真正的目录。
/proc
是一个虚拟文件系统。当您打开其中一个“文件”并从其输出流中读取时,内核将提供数据。由于内核还负责管理进程<pid>
,因此只要内核跟踪它,内核就会告诉您/proc/<pid>
目录是否存在。
由于bash在进程存在之前无法设置$!
,因此在此之后您肯定可以安全地检查/proc
下的进程虚拟目录。