我正在编写一个跨平台的bash脚本。它需要使用此命令#1:
cat /proc/$PID/cmdline
如果procfs不可用(例如在OS X上),它需要回退到这个命令#2:
ps -eo "pid command" | grep "^$PID"
我的问题很简单:检测'/ proc'文件系统是否存在的正确方法是什么?
答案 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