У Lubuntu есть функция анти-голубая света?

ОБНОВЛЕНИЕ: Я сделал все это ниже, и это здорово, но я придумал лучший способ сортировки каталогов по использованию inode:
du --inodes -S | sort -rh | sed -n \
        '1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'

И если вы хотите оставаться в той же файловой системе, что и вы:

du --inodes -xS

Вот пример вывода:

15K     /usr/share/man/man3
4.0K    /usr/lib
3.6K    /usr/bin
2.4K    /usr/share/man/man1
1.9K    /usr/share/fonts/75dpi
...
519     /usr/lib/python2.7/site-packages/bzrlib
516     /usr/include/KDE
498     /usr/include/qt/QtCore
487     /usr/lib/modules/3.13.6-2-MANJARO/build/include/config
484     /usr/src/linux-3.12.14-2-MANJARO/include/config

СЕЙЧАС С LS:

Несколько человек упомянули, что у них нет обновленных coreutils, а параметр --inodes - им недоступно. Итак, вот ls:

sudo ls -AiR1U ./ | 
sed -rn '/^[./]/{h;n;};G;
    s|^ *([0-9][0-9]*)[^0-9][^/]*([~./].*):|\1:\2|p' | 
sort -t : -uk1.1,1n |
cut -d: -f2 | sort -V |
uniq -c |sort -rn | head -n10

Это дает мне почти идентичные результаты с командой du :

DU:

15K     /usr/share/man/man3
4.0K    /usr/lib
3.6K    /usr/bin
2.4K    /usr/share/man/man1
1.9K    /usr/share/fonts/75dpi
1.9K    /usr/share/fonts/100dpi
1.9K    /usr/share/doc/arch-wiki-markdown
1.6K    /usr/share/fonts/TTF
1.6K    /usr/share/dolphin-emu/sys/GameSettings
1.6K    /usr/share/doc/efl/html

LS:

14686   /usr/share/man/man3:
4322    /usr/lib:
3653    /usr/bin:
2457    /usr/share/man/man1:
1897    /usr/share/fonts/100dpi:
1897    /usr/share/fonts/75dpi:
1890    /usr/share/doc/arch-wiki-markdown:
1613    /usr/include:
1575    /usr/share/doc/efl/html:
1556    /usr/share/dolphin-emu/sys/GameSettings:

Я думаю, что include Дело просто зависит от того, в какой каталог программа смотрит в первую очередь - потому что это одни и те же файлы и жестко связаны. Вроде как то, что выше. Я могу ошибаться в этом - и я приветствую исправление ...

Основной метод заключается в том, что я заменяю каждое из имен файлов ls на имя содержащего его каталога в sed . После этого ... Ну, я и сам немного нечеткий. Я почти уверен, что он точно считает файлы, как вы можете видеть здесь:

% _ls_i ~/test
> 100 /home/mikeserv/test/realdir
>   2 /home/mikeserv/test
>   1 /home/mikeserv/test/linkdir

DU DEMO

% du --version
> du (GNU coreutils) 8.22

Создайте тестовый каталог:

% mkdir ~/test ; cd ~/test
% du --inodes -S
> 1       .

Некоторые дочерние каталоги:

% mkdir ./realdir ./linkdir
% du --inodes -S
> 1       ./realdir
> 1       ./linkdir
> 1       .

Создайте несколько файлов:

% printf 'touch ./realdir/file%s\n' `seq 1 100` | . /dev/stdin
% du --inodes -S
> 101     ./realdir
> 1       ./linkdir
> 1       .

Некоторые жесткие ссылки:

% printf 'n="%s" ; ln ./realdir/file$n ./linkdir/link$n\n' `seq 1 100` | 
    . /dev/stdin
% du --inodes -S
> 101     ./realdir
> 1       ./linkdir
> 1       .

Посмотрите на жесткие ссылки:

% cd ./linkdir
% du --inodes -S
> 101

% cd ../realdir
% du --inodes -S
> 101

Они подсчитываются отдельно, но идут на один каталог вверх ...

% cd ..
% du --inodes -S
> 101     ./realdir
> 1       ./linkdir
> 1       .

Затем я запустил свой запускаемый скрипт снизу и:

> 100     /home/mikeserv/test/realdir
> 100     /home/mikeserv/test/linkdir
> 2       /home/mikeserv/test

И скрипт Грэма:

> 101 ./realdir
> 101 ./linkdir
> 3 ./

Так что я думаю это показывает, что единственный способ подсчитать индексные дескрипторы - это индексные дескрипторы. И поскольку подсчет файлов означает подсчет inodes, вы не можете подсчитать inodes дважды - для точного подсчета файлов inodes не могут быть подсчитаны более одного раза.

СТАРЫЙ:

Я нахожу это быстрее и переносимым:

sh <<-\CMD
    { echo 'here='"$PWD"
        printf 'cd "${here}/%s" 2>/dev/null && {
                set -- 
                for glob in ".[!.]*" "[!.]*" ; do
                    set -- $glob "$@" && 
                        [ -e "./$1" ] || shift
                done    
                printf "%%s\\t%%s\\n" $# "$PWD"
        }\n' $( find . -depth -type d 2>/dev/null )
    } | . /dev/stdin |
    sort -rn | 
    sed -n \
        '1,50{/^.\{71\}/s/^\(.\{30\}\).*\(.\{37\}\)$/\1...\2/;p}'
CMD

Необязательно -exec для каждого каталога - он использует только один sh ell процесс и один найти . Мне нужно получить набор - $ glob , чтобы включить файлы .hidden и все остальное, но это очень близко и очень быстро. Вы можете просто cd в любой корневой каталог, который должен быть для проверки, и вперед.

Вот образец моего вывода из / usr :

14684   /usr/share/man/man3
4322    /usr/lib
3650    /usr/bin
2454    /usr/share/man/man1
1897    /usr/share/fonts/75dpi
...
557     /usr/share/gtk-doc/html/gtk3
557     /usr/share/doc/elementary/latex
539     /usr/lib32/wine/fakedlls
534     /usr/lib/python2.7/site-packages/bzrlib
500     /usr/lib/python3.3/test

Я также использую sed внизу, чтобы сократить его до 50 лучших результатов. head , конечно, будет быстрее, но я также обрезаю каждую строку, если необходимо:

...   
159     /home/mikeserv/.config/hom...hhkdoolnlbekcfllmednbl/4.30_0/plugins
154     /home/mikeserv/.config/hom...odhpcledpamjachpmelml/1.3.11_0/js/ace
...

Это грубовато, по общему признанию, но это была мысль. Еще одно грубое устройство, которое я использую, - это сброс 2> stderr для find и cd в 2> / dev / null . Это просто чище, чем искать ошибки прав доступа для каталогов, которые я не могу прочитать без корневого доступа - возможно, мне следует указать это в find . Что ж, работа продолжается.

Хорошо, я исправил глобусы оболочки следующим образом:

for glob in ".[!.]*" "[!.]*" ; do
    set -- $glob "$@" && 
        [ -e "./$1" ] || shift
done    

Я действительно собирался задать вопрос о том, как это можно сделать, но когда я набирал заголовок вопроса, сайт указал мне на ] предложил родственный вопрос где, о чудо, Стефан уже взвешивал в . Так что это было удобно. Очевидно [^.], хотя и хорошо поддерживаются, но не переносимы, и вы должны использовать ! Bang. Я нашел это в комментарии Стефана.

В любом случае, очевидно, что простого извлечения скрытых файлов было недостаточно. Поэтому я должен установить дважды, чтобы избежать поиска позиционных значений для литерала $ glob . Тем не менее, похоже, что это вообще не влияет на производительность и надежно добавляет каждый файл в каталог.

4
12.12.2018, 20:06
2 ответа

Да, по крайней мере, на нем можно использовать Redshift — установите пакет redshift-gtk.

Некоторые среды рабочего стола, такие как GNOME, имеют аналогичные встроенные -функции, я не уверен, что в Lubuntu они есть.

6
27.01.2020, 20:53

Вы также можете запустить скрипт cron с использованием xcalib, например.:

# reduce blue, add red
xcalib -a -blue 1.1 0 100  -red 0.95 0 100 
# reduce gamma
xcalib -a -gc 1.05 
1
27.01.2020, 20:53

Теги

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