newbie0611 |
|
Темы:
20
Сообщения:
89
Участник с: 27 июня 2011
|
Я, кстати, грабли огребал на парсинге почтового ящика. Там было ~ 600 000 файлов (спам за 5 лет в основном :)), а индекс к этой помойке был похерен :) Так вот ls отрабатывал этак с полчаса. for тоже стартовал далеко не сразу, а в некоторых каталогах вылетал с переполнением. Решением стало find … -exec … find не формирует список и не сортирует его по алфавиту, работает “с колёс”. А как пишут в учебниках в цикле for истинность выражения используется для выхода, а в цикле while - для продолжения. |
zubastiy |
|
Темы:
136
Сообщения:
548
Участник с: 18 сентября 2009
|
newbie0611 возможно это какая то особенность ffmpeg - вот такая конструкция переходит по именам, при этом не корректно работает ffmpeg (на выходе файлы нулевой длины) и скрипт висит ожидая окончания ввода (тоесть while read работает как задуманно) ls -1 *.flv | while read j; do ffmpeg -t 10 -i “$j” -s svga -y “${j%.*}.mp4” 2&1> /dev/null; done $ ls -lh + ls -lh total 52M -rw-r–r– 1 user users 0 Oct 11 17:30 - -rw-r–r– 1 user users 179K Oct 11 16:40 5DF77StYwVU.flv -rw-r–r– 1 user users 136K Oct 11 17:15 5DF77StYwVU.flv.tar.gz -rw-r–r– 1 user users 0 Oct 11 18:06 5DF77StYwVU.mp4 -rw-r–r– 1 user users 26M Aug 30 2010 c4x1RPoMoAg.flv -rw-r–r– 1 user users 26M Oct 11 17:15 c4x1RPoMoAg.flv.tar.gz -rw-r–r– 1 user users 0 Oct 11 18:06 c4x1RPoMoAg.mp4 |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
2&1> /dev/nullЭто ошибка. Программе передаётся агрумент "2", и она отправляется в бэкграунд & , после чего делается попытка выполнить команду "1", которой естественно не существует. На самом деле перенаправление stderr в stdout делается так: 2>&1 , то есть дескриптор "2" перенаправляется в дескриптор >& номер "1" Полная завпись перенаправления stderr в stdout, а потом всёго в /dev/null выглядит так: 2>&1 > /dev/null А ещё для такого случая есть сокращённая: &> /dev/null Кстати, перенаправление тут не поможет – в варианте ls | while read … оболочка делает форк, то есть текущий процесс выполняет команду ls , вывод которой перенаправляется в “трубу”, из которой читает свой стандартный ввод уже другой процесс оболочки, который реализует while и read, и который запускает уже третий процесс, то есть ffmpeg, вывод которого вы зачем-то перенаправляете. Если ffmpeg и передаёт что-то родительскому процессу с циклом, то это не вывод, а сигнал. |
void |
|
Темы:
32
Сообщения:
375
Участник с: 15 февраля 2010
|
Natrios/stdin/stdout/ |
newbie0611 |
|
Темы:
20
Сообщения:
89
Участник с: 27 июня 2011
|
Есть предложение модераторам перенести ветку в /dev/null и переобозвать в “увлекательное погружение в мир коллективного bash” |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
void, спасибо, исправил. newbie0611, нет. Знание шелла вообще, и bash в частности, крайне желательно в Линуксе, и тем более в Арче. |
zubastiy |
|
Темы:
136
Сообщения:
548
Участник с: 18 сентября 2009
|
Natrio2&1> /dev/nullЭто ошибка. Программе передаётся агрумент "2", и она отправляется в бэкграунд & , после чего делается попытка выполнить команду "1", которой естественно не существует. конструкция 2&1> /dev/null - банальная опечатка, я чего то там хотел проверить и сделал фигню ) сигнал ffmpeg при выходе (проверял добавляя в “тело” цикла && echo $? - правильно определаю сигнал который возвращает ffmpeg?) возращает 0 как и tar но конструкция с ls | while| tar отрабатывает, а ffmpeg нет ) |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
Нет, это не сигнал. То что вы проверяли – это код завершения. Сигналы это системные события UNIX. Для их отправки “вручную” используется команда kill , например kill -TERM 13567 |
newbie0611 |
|
Темы:
20
Сообщения:
89
Участник с: 27 июня 2011
|
2 Natrio Я как раз не спорю, что шелл знать надо. Только тут мы уже достаточно далеко ушли от первоначально заданного вопроса. Как я понимаю, эта ветка предполагается как подспорье новичку, который чего-то не смог вкурить из вики/мануалов. А флейм, который разрастается сейчас - ему самое место в /dev/null (я так понимаю, беседы о шелле являются подмножеством бесед обо всём). Но тема очень интересная. |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
newbie0611, МЫ никуда не ушли от первоначально заданного вопроса, никакого флэйма (бессмысленных и беспощадных споров до драки, с закидыванием оппонента чем попало) тут тоже нет :) Всё строго по существу, как темы, так и подфорума, баш для начинающих. Вы обращались к модераторам – модератор вам ответил. |