2014-09-21 6 views
1

Я пишу скрипт bash для перекрестной платформы. Для этого нужно использовать эту команду # 1:Правильный способ обнаружения файловой системы '/ proc'?

cat /proc/$PID/cmdline 

и если PROCFS не доступен (на OS X, например), он должен Откат к этой команде # 2:

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

Мой вопрос довольно просто: каков правильный способ обнаружения файловой системы «/ proc»?

+0

Для чего это стоит, 'пс -o команда = -p $ PID' даст вам то, что вы хотите без половинного привязанного _grep_. – pilcrow

ответ

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 всегда?

0

Файловая система Proc смонтирована на/proc.

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