2016-01-04 4 views
0

Подсчитать открытый epubs я использовал это:Lsof, оглавлению вывода

# - determine how many epubs are open - 
NUMBER_OF_OPEN_EPUBS=0 
while read -r LINE ; do 
    if [ "$(echo $LINE | rev | cut -c1-5 | rev)" = ".epub" ]; then 
     NUMBER_OF_OPEN_EPUBS="$(($NUMBER_OF_OPEN_EPUBS+1))" 
    fi 
done < <(lsof | grep "\.epub") 
# --- end determine how many epubs are open --- 

и он всегда работал. Но я хотел распространить его на файлы fb2 (похожие на epubs), поэтому я получил fb2 для тестирования и не смог заставить его работать. Чтобы проиллюстрировать основную проблему в его простейшей форме:

С 2 файлов, /test.epub & /test.fb2 открыт в fbreader в раздельных окнах, в Баш, в lxterminal под Ubuntu 14.04 LTS и обычная Openbox:

[email protected]:~$ lsof | grep "\.fb2" | tr -s " " 
[email protected]:~$ lsof | grep "\.epub" | tr -s " " 
fbreader 28982 me 12r REG 8,5 346340 8375 /test.epub 
[email protected]:~$ 

Почему не lsof посмотреть fb2? В практическом плане, я полагаю, я мог бы использовать ps, который не имеет никаких предрассудков в отношении fb2 файлов (и, кстати, доказывает, что grep не виноват), но почему lsof snub fb2 файлов?

================== P.S. Я отредактировал это, чтобы привести его в надлежащий контекст здесь, хотя, благодаря господину Хайде, он уже решен. Рассматриваемый вопрос отражает подразумеваемое и неисследованное предположение, которое оказывается ложным. См. Ответ.

+1

Вы имели в виду '/ test.fb2' вместо'/test.fbw'? – Steven

+0

Да. Oohhhh. Принял несколько взглядов, чтобы поймать, где вы имели в виду. Lesse, если я могу понять, как это изменить. –

+0

@Steven. В самом деле, спасибо, что поймали это. Могу я дать вам коричневые точки для этого? Я исправил это и одну грамматическую ошибку. Кто-то предложил выделить имена файлов и программ, как и в вашем комментарии, поэтому я принял это, хотя мне интересно, почему это так. –

ответ

1

Комментарий Гайда был ключом, который мне нужен. Поэтому он должен получить кредит. Я не знаю, как это работает, но я скрыл этот сайт, чтобы знать, что это важно для вас.

Итак, правильно, если fbreader хранит один файл открытым, но не другим, как предложил Гайд, вопрос был бы почему. Я предполагал, что тип файла был важным, но однажды я посмотрел на него таким образом, что возможность была очевидна, и я ее протестировал, и проблема не в типе, а в размере файла. Я нашел только один fb2, чтобы проверить мой скрипт, и он оказался меньше, чем большинство моих epubs. Я нашел маленький эпиб, и он поступил так же. Предположительно, если файл достаточно мал, fbreader просто хранит все в памяти, но не может для большего файла. Итак, mea culpa, проблема, о которой говорилось, является ложной. В нижней строке из сценария pov я должен использовать ps -eo args вместо lsof потому что ps видит файл в качестве аргумента для команды, которая запустила открытый процесс, а не открытый файл, и это, вероятно, больше для В любом случае. Спасибо, джентльмены.

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