Вы можете получить количество файлов, открытых процессом, идентифицируемым PID, например 15232, выполнив:
ls -l /proc/15232/fd | wc -l
из списков Debian:
Я пытаюсь выяснить значение :
/proc/$PID/fd/*
файлов.
Это ссылки, указывающие на открытые файлы процесса, чей pid это $PID. Fd означает «файловые дескрипторы», то есть целое число, которое идентифицирует любой программный ввод или вывод в UNIX-подобных системах.
Именно здесь команда lsof
получает информацию, чтобы предоставить вам файлы процесса.
Это особенность ядра linux, не зависящая от дистрибутива.
Использованиеsed
:
$ sed -n '/is the/s/^.*blah:\([0-9]*\);.*$/\1/p' file | sort -u
1
10
108636
1194996
4321
9876
Подстановка заменяет содержимое всех строк, содержащих строку is the
, числом от blah:
до ;
. Строки, не содержащие строку, игнорируются.
Попробуйте это:
grep "is the" file | sed 's/.*blah://;s/;.*//' | sort -u
Пояснение:
grep
получает все строки с " is the
" (в любой части строки)sed
удалите все до " :
" и после " ;
" (вместо этого вы можете использовать sed -e 's/.*blah://' -e 's/;.*//'
для лучшего понимания)sort
сортирует строки cat file | grep "is the" | awk -F':' '{print $2}'|awk -F';' '{print $1}'|sort -u
Вы ищете директиву \K
, чтобы забыть о том, что вы только что сопоставили.
grep -oP 'is the.*?blah:\K\d+'
Тогдаsort -u