2012-07-06 4 views
0

Например,Linux Command, чтобы узнать «счет» запущенного процесса?

Есть 3 процесса я должен найти "Количество" запущенного процесса в текущем каталоге

имени ../sample

[корень @ sp3 образец] # пс -eaf | grep perl

корень 14104 1 58 08:39? 03:31:34 perl example1.pl

корень 17441 1 41 09:09? 02:17:24 perl example2.pl

корень 24543 1 0 июл5? 00:00:00 Perl sample.pl

[корень @ sp3 образец] #

В результате я должен вернуться в 3

I have currently in sample directory and i have to count the number of process in same directory

Пожалуйста, пост любое решение.

+0

'ps aux | grep perl | grep -vc grep' – wildplasser

ответ

5

Попробуйте

LOCAL_PWD = pwd 
ps -auxeaf| grep $LOCAL_PWD| wc -l 

туалет -l подсчитывает строки

касается как показать полный путь процессов, пожалуйста, посмотрите на here

+0

В результате весь процесс выполняется во всех каталогах, но мне нужно подсчитать весь процесс, запущенный в текущем каталоге. – Anand

+0

затем добавьте grep для текущей директории между конвейером команды и используйте ps-переключатель, чтобы показать полный путь процессов. – BigMike

+0

Я пробовал это ps -eaf | grep perl | grep/var/www/anand/sample | wc -l но он возвращает кол-во 0, пожалуйста, опубликуйте любое решение – Anand

2

Это действительно не место для этого (есть linux часть stackexchange). Но вы можете использовать wc для подсчета строк на любом выходе, так что напишите свою команду так: ps -eaf | grep perl | wc -l. Кстати, я также рекомендовал бы сделать команду grep не соответствующей себе, выполнив grep [p]erl (помещая [] вокруг любого символа, все равно будет соответствовать только «perl», но команда grep больше не имеет «perl» в нем).

В случае, если это вам удобно, я собрал сценарий, как я упомянул в комментарии ниже.

total=0 
for file in $(find -executable -type f) ; do 
    echo "Checking $file:" 
    count=$(ps -ef | awk '{print $8}' | grep "^.*/*${file##*/}$" | wc -l) 
    echo "$count processes found." 
    total=$(($total + $count)) 
done 
echo $total 
+0

Это приведет к тому, что весь процесс, запущенный во всех каталогах, мне нужно будет подсчитать весь процесс, запущенный в текущем каталоге. – Anand

+0

Это звучало из того, что вы сказали, как будто у вас уже был список предметов, и просто хотел, чтобы их подсчитали. Я вижу, что вы сейчас выяснили, к сожалению, гораздо сложнее сделать это специально, поскольку ps не обязательно предоставляет эту информацию (насколько мне известно).Было бы неплохо иметь небольшой скрипт, который проверяет все исполняемые файлы в текущем каталоге и ищет имена по имени в выводе ps? Недостатком этого является то, что если у вас есть исполняемый файл с тем же именем в другом месте, вы не можете легко отличить их. – Thor84no

+0

Это похоже на самое сложное решение, предоставляемое этой действительно тривиальной проблеме. – fork0

-1

Если запустив вы имеете в виду "в очереди на исполнение":

ps ax -o stat,args |grep '^R'|wc -l 
+0

Мне нужно подсчитать весь процесс, запущенный в текущем каталоге. – Anand

+0

Это немного сложнее для простой магии оболочки. Взгляните на lsof: процесс с рабочим каталогом должен ссылаться на него. Таким образом, вы можете перечислить все процессы, которые ссылаются на данный каталог, чем выяснить, какие из них фактически поставлены в очередь для выполнения. Чтобы получить список процессов: 'lsof .' (для текущего каталога) – fork0

+0

Я пробовал это ps -eaf | grep perl | grep/var/www/anand/sample | wc -l но он возвращает кол-во 0, пожалуйста, отправьте любое решение – Anand

0

Простой: пс -eaf | grep perl | grep -v grep | wc -l

+0

Что такое grep perk? – Roylee

+0

typo - должен быть perl. исправлено –

Смежные вопросы