Si desea obtener más información sobre el tiempo de construcción de emerge, puede usar app -portage/genlop . Genlop extrae información útil de los registros de emerge y puede hacer algunas estimaciones basadas en esta información.
Para ver el paquete actual que se está compilando:
~$ genlop -c
Currently merging 2 out of 19
* sys-kernel/linux-firmware-20180103-r1
current merge time: 8 seconds.
ETA: 1 minute and 13 seconds.
Si desea conocer el tiempo estimado de una operación completa emerge
:
~ $ emerge -p app-office/libreoffice www-client/firefox | genlop -pq
These are the pretended packages: (this may take a while; wait...)
[ebuild R ~] www-client/firefox-60.0.1::gentoo USE="[...]" 0 KiB
[ebuild R ] app-office/libreoffice-6.0.3.2::gentoo USE="[...]" 0 KiB
Estimated update time: 2 hours, 27 minutes.
degenlop -h
:
-p estimate build time from a piped "emerge -p" output
-q query gentoo.linuxhowtos.org database if no local emerge was found
Tenga en cuenta que al usar la opción -q
, el tiempo de compilación real puede ser bastante lento. Esto se debe a que depende de la información del usuario enviada a la base de datos gentoo.linuxhowtos.org . Esto no debería importar cuando ya apareció una versión anterior del paquete en el sistema, ya que estará en los registros.
Как @steve написал , просто используйте wc -c
для подсчета количества байтов. См. man wc
для других опций.
echo
добавляет новую строку в конец вывода , поэтому при подсчете вы получите на один символ больше, чем могли бы ожидать. Используйте printf
для более строгого управления выводом.
Допустим, вы хотите запустить команду, если длина аргумента меньше 2:
seq 100 | parallel echo '{= length($_) >= 2 and skip =}'
Он также будет запускать задания параллельно -по одному на каждом ядре.
NB :GNU Parallel не является параллелью в moreutils.
GNU Parallel — это универсальный распараллеливатель, который упрощает параллельное выполнение заданий на одном и том же компьютере или на нескольких компьютерах, к которым у вас есть доступ по ssh.
Если у вас есть 32 разных задания, которые вы хотите запустить на 4 ЦП, прямой способ распараллеливания — запустить 8 заданий на каждом ЦП:
GNU Parallel вместо этого порождает новый процесс, когда он завершается -, сохраняя активность ЦП и, таким образом, экономя время:
Установка
Из соображений безопасности вам следует установить GNU Parallel с помощью вашего менеджера пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует root-доступа. Это можно сделать за 10 секунд, сделав это:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Другие варианты установки см. в http://git.savannah.gnu.org/cgit/parallel.git/tree/README
.Узнать больше
Посмотреть другие примеры:http://www.gnu.org/software/parallel/man.html
Посмотрите вступительные видеоролики:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Прохождение обучения:http://www.gnu.org/software/parallel/parallel_tutorial.html
Подпишитесь на список рассылки, чтобы получить поддержку:https://lists.gnu.org/mailman/listinfo/parallel