Linux - /proc/PID 是什么时候创建的?
Linux - when is /proc/PID created?
我正在编写 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 这是一个优秀的看门狗工具。
/proc/<pid>
从未创建。这不是一个真正的目录。
/proc
是一个虚拟文件系统。当您打开其中一个 "files" 并从其输出流中读取时,数据由内核提供。由于内核还负责管理进程 <pid>
,内核会告诉您 /proc/<pid>
目录存在,只要内核跟踪它就存在。
因为 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 这是一个优秀的看门狗工具。
/proc/<pid>
从未创建。这不是一个真正的目录。
/proc
是一个虚拟文件系统。当您打开其中一个 "files" 并从其输出流中读取时,数据由内核提供。由于内核还负责管理进程 <pid>
,内核会告诉您 /proc/<pid>
目录存在,只要内核跟踪它就存在。
因为 bash 无法设置 $!
直到进程存在,你绝对可以安全地检查进程在 /proc
下的虚拟目录。