2014-09-21 97 views
1

我在寫一個跨平臺的bash腳本。它需要使用此命令#1:檢測'/ proc'文件系統的正確方法是什麼?

cat /proc/$PID/cmdline 

如果procfs的不可用(在OS X爲例),它需要退回到這個指令#2:

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

我的問題非常簡單:檢測'/ proc'文件系統是否存在的正確方法是什麼?

+0

對於它的價值,'PS -o命令= -p $ PID'會給你想要的東西沒有半錨定_grep_。 – pilcrow 2014-09-21 13:35:34

回答

4

如果有「proc文件系統」,它幾乎總是會安裝在/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始終?

0

proc文件系統安裝在/ proc上。

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