我在寫一個跨平臺的bash腳本。它需要使用此命令#1:檢測'/ proc'文件系統的正確方法是什麼?
cat /proc/$PID/cmdline
如果procfs的不可用(在OS X爲例),它需要退回到這個指令#2:
ps -eo "pid command" | grep "^$PID"
我的問題非常簡單:檢測'/ proc'文件系統是否存在的正確方法是什麼?
我在寫一個跨平臺的bash腳本。它需要使用此命令#1:檢測'/ proc'文件系統的正確方法是什麼?
cat /proc/$PID/cmdline
如果procfs的不可用(在OS X爲例),它需要退回到這個指令#2:
ps -eo "pid command" | grep "^$PID"
我的問題非常簡單:檢測'/ proc'文件系統是否存在的正確方法是什麼?
如果有「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
始終?
proc文件系統安裝在/ proc上。
mount | awk '/proc/ {print $3}' This will show all mounted proc filesystems with full path
對於它的價值,'PS -o命令= -p $ PID'會給你想要的東西沒有半錨定_grep_。 – pilcrow 2014-09-21 13:35:34