Индикатор выполнения в updatedb

Современный Xorg использует расширение XKB для поддержки раскладок клавиатуры. Xmodmap эмулирован через слой совместимости, но он имеет причуды. Можно отключить XKB полностью, и Xorg вернется к использованию старых отображений клавиатуры Xmodmap. Я думаю, что это устанавливает опцию XkbDisable на истинный в xorg.conf, но Вы, вероятно, хотите сделать это метод XKB. Существует много настраиваемых опций, расположенных в /usr/share/X11/xkb/rules/xorg.xml, и я думаю, что Вы хотите caps:swapescape, который подкачивает Caps Lock и Escape. Попробуйте setxkbmap - опция caps:swapescape

7
18.07.2012, 11:20
2 ответа

Нет, нет такой опции, также это не должно иметь никого.

Если необходимо измерить это, необходимо сначала знать, сколько файлов присутствует в системе, которая означает цикл через все дважды, это может быть медленно

Один evicent пример - это при извлечении исходного кода ядра с file-roller, это медленнее, чем выполнение того же самого с tar непосредственно, потому что ролик файла должен зарегистрировать все файлы сначала (иначе, индикатор выполнения мог бы быть неправильно отображен), и Вы ожидаете некоторое время, прежде чем процесс извлечения на самом деле начался.

4
27.01.2020, 20:17
  • 1
    , Вы совершенно правы. Однако было бы возможно предсказать время для следующего запуска с помощью “умного предположения”. Например, можно было вычислить экспоненциально взвешенное скользящее среднее значение из прошлых значений, которое в основном предполагает, что следующий запуск возьмет пока среднее число последних выполнений. Это, конечно, не точно, но очень дешево для вычислений, так как это не циклично выполняется по файловой системе. Учитывая, что ни сумма файлов, ни загрузка не изменяются существенно, она уступит очень практическим ориентировочным стоимостям. –  Marco 12.01.2013, 16:00

Это не эффективное решение, но не так плохо как цикличное выполнение через все дважды.

Количество файлов, обработанных updatedb равно:

updatedb -v | wc -l

или примерно равный:

find / -mount | wc -l

Мы не можем использовать эти команды для получения числа, потому что это было бы цикличное выполнение дважды.

Но мы можем использовать количество используемого inodes, который является приблизительно тем же:

df -i | grep '/$' | awk '{print $3}'

Имея это значение, мы можем вычислить, как далеко мы добрались в то время как updatedb -v команда работает:

count=$(df -i | grep '/$' | awk '{print $3}')

sudo updatedb -v | while read
do
    printf "%3d\r" $((100 * (++i) / count))
done

Это очень неэффективно, потому что printf назван для каждой строки в выводе updatedb -v. Лучше, если мы printf для только некоторых строк.

count=$(df -i | grep '/$' | awk '{print $3}')

sudo updatedb -v | while read
do
    if (( ++i % (count/20) == 0 )); then
        printf "%3d\r" $((100 * i / count))
    fi
done
5
27.01.2020, 20:17
  • 1
    Интересная идея. Но мой df -i отчеты 0 во всех столбцах для/. Возможно, извлечение файла текущей базы данных рассчитывает от locate -S (или --statistics или другой подобный переключатель Ваш locate реализация имеет), мог также использоваться в качестве приблизительного количества файла. –  manatwork 18.07.2012, 17:15

Теги

Похожие вопросы