Linux - 何时创建/ proc / PID?

时间:2015-07-16 19:53:13

标签: linux bash proc

我正在编写一个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,这是一个出色的监视工具。

1 个答案:

答案 0 :(得分:4)

永远不会创建

/proc/<pid>。它不是一个真正的目录。

/proc是一个虚拟文件系统。当您打开其中一个“文件”并从其输出流中读取时,内核将提供数据。由于内核还负责管理进程<pid>,因此只要内核跟踪它,内核就会告诉您/proc/<pid>目录是否存在。

由于bash在进程存在之前无法设置$!,因此在此之后您肯定可以安全地检查/proc下的进程虚拟目录。