Я использую GNU Parallel для одновременного выполнения команды несколько тысяч раз.
Для получения журналов выполнения я использую --files
и --results
.
Чтобы получить красивый индикатор выполнения во время работы, я использую --eta
и --progress
.
Теперь моя проблема в том, что хотя STDERR перенаправляется в файлы, он все равно выводится на терминал, что портит мой индикатор выполнения.
Как мне отключить вывод STDERR на терминал? Я все равно хочу иметь эту информацию в файлах журнала, поэтому я не могу просто обернуть команду в 2>/dev/null
.
На данный момент моя командная строка выглядит так:
cat input.txt | parallel -P 10 --progress --eta --files --results output_dir/ "./script.sh some-arg {}"
решение1
Если вам нужен хороший бар, могу ли я предложить --bar
вместо --eta
? Вам нужна версия 20131122 или более поздняя.
Кажется, это работает, поскольку файлы STDERR не печатаются, поэтому на STDERR вы не получите ничего, кроме --bar
:
cat input.txt | parallel -P 10 --bar --files --results output_dir/ "./script.sh some-arg {}" >/dev/null
решение2
Мне это помогло:
parallel --bar --jobs 10 '(ffmpegthumbnailer -i "{}" -o "/tmp/${DIR}/{}.jpg" -f 2>/dev/null)' ::: *.mp4