检测'/ proc'文件系统的正确方法?

时间:2014-09-21 12:39:20

标签: linux shell unix procfs

我正在编写一个跨平台的bash脚本。它需要使用此命令#1:

cat /proc/$PID/cmdline

如果procfs不可用(例如在OS X上),它需要回退到这个命令#2:

ps -eo "pid command" | grep "^$PID"

我的问题很简单:检测'/ proc'文件系统是否存在的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

“proc filesystem”几乎总是安装在/proc中,如果存在的话,但不一定是这种情况(至少在理论上)。可能更便携的方法是使用mount -t proc列出proc类型的挂载文件系统,并从那里提取路径。如果该命令没有返回路径,则不会挂载procfs,您可以回退到备用命令。

有些事情:

PROC_PATH=$(mount -t proc | egrep -o '/[^ ]+')
if [ "$PROC_PATH" ]; then
    # use procfs
else
    # use alternative
fi

另一方面,ps应该更便携并始终有效,所以也许最好的解决方案只是始终使用ps

答案 1 :(得分:0)

Proc文件系统挂载在/ proc上。

mount | awk '/proc/ {print $3}'       This will show all mounted proc filesystems with full path