2014-10-29 1 views
0

Я хочу получить доступ к файлу status.log некоторых процессов, от терминала bash, в цикле while и сравнить их. Итак, поскольку PID не является статичным, как я могу получить доступ к их файлам proc/PID с их именами команд, а не с PID?Доступ к процессу в procfs по имени из bash

ответ

0

Попробуйте Grep выход из ps -A по имени команды и получить PID оттуда

+0

Да, но после этого, как я могу использовать в ИДП без ввода пользователя? Я имею в виду, я хочу каждый раз находить PID по имени, и они используют их для достижения статуса процессов. – ihavename

+0

вы можете обрезать вывод из grep и сохранять PID до переменной – 4rlekin

0

Вы можете использовать этот способ

Пример:

sleep 1000 & 
cd /proc/`pidof sleep` 

См эту ссылку man pidof

+1

. Ваш пример работает только в том случае, если существует один процесс под названием 'sleep' (вы должны вероятно, вызывается 'pidof' с опцией' -s', поэтому он возвращает один PID в этом случае. – Hasturkun

+0

@ Команда Hasturkun, 'cd' принимает только первый аргумент, игнорируя другие аргументы. – Kalanidhi

+0

@ KalanidhiM. И что, если процесс с наименьшим номером 'sleep' является неправильным? – chepner

0

Предполагая, что у вас есть pgrep (что вам нужно, это часть procps), вызовите pgrep -x somecmdname, чтобы получить список PID, соответствующий этой строке. Оттуда вы можете получить доступ к файлам proc как обычно.

например.

for pid in `pgrep -x somecmd`; do 
echo $pid #or do something more interesting 
done 
0

Попробуйте команду pidof:

$ pidof bash 
14317 10465 7204 3514 3466 

Затем вы можете цикл по PIDs:

$ for pid in $(pidof bash); do echo "$pid" ; done 
14317 
10465 
7204 
3514 
3466 
Смежные вопросы