URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 4614
[ Назад ]

Исходное сообщение
"В каком порядке grep обходит каталоги при поиске?"

Отправлено inFlowiaLab , 19-Май-20 09:36 
И можно ли его задать?

Смотрю выхлопы поиска по содержимому каталога при помощи grep и в толк не возьму в каком порядке он по ним ходит. Это определённо не алфавитный порядок, и не по дате изменения, но какая-то закономерность есть. Он например взявшись за один каталог не выпрыгивает из него в другой пока не закончит поиск по нему, но вот каким каталогом будет следующий - загадка.

PS: Без понимания этого никак не могу найти, на каком файле он зависает при поиске.


Содержание

Сообщения в этом обсуждении
"В каком порядке grep обходит каталоги при поиске?"
Отправлено Аноним , 19-Май-20 10:59 
не знаю про порядок, но можно попробовать сделать
ls -la /proc/<pid>/fd

и посмотреть, что открыто.

"В каком порядке grep обходит каталоги при поиске?"
Отправлено inFlowiaLab , 19-Май-20 11:12 
> не знаю про порядок, но можно попробовать сделать
>
ls -la /proc/<pid>/fd

> и посмотреть, что открыто.

выполнил после начала висяка ls -a /proc/10908/fd
и вот что выдало:
.  ..  0  1  2  255
Как мне это интерпретировать?


Попробовал то же самое для процеccа mousepad в котором открыть текстовый файл из домашней директории в выхлопе вышеуказанной команды так же не нашёл пути или имени открытого файла.
Судя по описанию в мане для /proc/<pid>/fd он действительно должен показывать текущий открытый файл но то ли это работает как-то не так, то ли уже больше не работает...


"В каком порядке grep обходит каталоги при поиске?"
Отправлено Аноним , 19-Май-20 11:45 
я написал -la, а не -a. Если напишешь -la, то вопросов должно стать меньше, т.к. там вывод другой

$   ls -la /proc/self/fd
total 0
dr-x------ 2 user user  0 May 19 11:44 .
dr-xr-xr-x 9 user user  0 May 19 11:44 ..
lrwx------ 1 user user 64 May 19 11:44 0 -> /dev/pts/13
lrwx------ 1 user user 64 May 19 11:44 1 -> /dev/pts/13
lrwx------ 1 user user 64 May 19 11:44 2 -> /dev/pts/13
lrwx------ 1 user user 64 May 19 11:44 24 -> '/home/user/.cache/appstream-cache-57PWK0.mdb (deleted)'
lr-x------ 1 user user 64 May 19 11:44 3 -> /proc/16437/fd
lrwx------ 1 user user 64 May 19 11:44 60 -> 'socket:[44095]'


"В каком порядке grep обходит каталоги при поиске?"
Отправлено inFlowiaLab , 19-Май-20 12:03 
> я написал -la, а не -a. Если напишешь -la, то вопросов должно
> стать меньше, т.к. там вывод другой

да, действительно, когда вбил вручную а не скопировал отсюда показало такой вывод:


итого 0
dr-x------ 2 i i  0 мая 19 12:00 .
dr-xr-xr-x 9 i i  0 мая 19 11:56 ..
lrwx------ 1 i i 64 мая 19 12:00 0 -> /dev/pts/2
lrwx------ 1 i i 64 мая 19 12:00 1 -> /dev/pts/2
lrwx------ 1 i i 64 мая 19 12:00 2 -> /dev/pts/2
lr-x------ 1 i i 64 мая 19 12:00 255 -> /mnt/Common/Scripts/2file/FIND-INside-TheSAME-errTOlog-looper.sh

Только толку 0, здесь нет ни одного файла из каталога в котором он искал, а это был /home/i/.cache/

"В каком порядке grep обходит каталоги при поиске?"
Отправлено Аноним , 19-Май-20 12:13 
либо в /home/i/.cache/ есть каталог с очень большим количеством файлов или вложенных каталогов, на поиске которых зависает греп, либо покажите команду на всякий случай

"В каком порядке grep обходит каталоги при поиске?"
Отправлено inFlowiaLab , 19-Май-20 12:16 
sudo grep -r -R --exclude-dir="proc" --exclude-dir="sys" --exclude-dir="run" --exclude-dir="dosdevices" --exclude-dir="mnt" --exclude-dir="media" "*?*"  "/home/i/.cache" 2>"$errLogPath"