Самый дешевый способ найти самый старый файл (рекурсивно) из каталога под большой нагрузкой

Перейдите к Параметрам настройки системы → Поведение Окна → Правила Окна. Нажмите на кнопку 'New …'. Добавьте, что описание как ‘максимизирует все на запуске’. Перейдите к вкладке 'Size & Position', затем включите флажки для ‘Максимизируемого горизонтально’ и ‘Максимизируемый вертикально’. Для каждого из них, устанавливает выпадающее для ‘Применения Первоначально’, и переключатель к 'Да'. Нажмите 'OK', затем 'Подайте заявку'.

Теперь все окна откроются максимизируемый.

Это включает окна, о которых Вы не могли думать как прикрепления, переходные окна, диалоговые окна и т.д. Можно исключить любого из них путем редактирования правила, которое Вы просто сделали: перейдите к вкладке 'Window matching' для правила и отмените выбор любые типы окна, которые Вы не хотите затронутый. Попытайтесь оставить просто ‘Нормальное Окно’.

Механизм правила очень универсален. Можно также изменить настройки на окне окном или основании приложения приложением, просто нажать на верхний левый значок строки заголовка окна, затем перейдите к Усовершенствованным → Специальным Настройкам Окна или Специальным Параметрам настройки приложения. 'Окно' делает правило (или редактирует существующий) для просто, что окно, 'Приложение' для каждого окна, созданного тем приложением.

Обновление: можно также установить полноэкранное состояние и/или удалить художественные оформления окна с этим механизмом. Менеджер окон является Вашей устрицей.

1
18.07.2013, 04:35
2 ответа

С zsh:

oldest=(**/*(.DOm[1]))

Для самого старого регулярного файла (zsh разрешение времени к второму),

С инструментами GNU:

(export LC_ALL=C
 find . -type f -printf '%T@\t%p\0' |
   sort -zg | tr '\0\n' '\n\0' | head -n 1 |
   cut -f2- | tr '\0' '\n')
2
27.01.2020, 23:39
  • 1
    +1, Возможно, добавляет что-то о фоновой обработке это и niceлуг это как пользователь кажется взволнованным об этом блокирующая и влияющая производительность под большой нагрузкой. –  Joseph R. 18.07.2013, 01:05
  • 2
    @JosephR. niceлуг? Бесполезный, это - IO-bound. ionice, возможно. –  Gilles 'SO- stop being evil' 18.07.2013, 02:54
  • 3
    @Gilles исправьте меня, если я неправ. Не был бы оба nice и ionice быть релевантными здесь? find поднял бы ЦП и может поэтому извлечь выгоду из nice и rm нуждался бы в большом количестве ввода-вывода и поэтому извлечет выгоду из ionice. –  Joseph R. 18.07.2013, 13:00
  • 4
    @JosephR. find IO-bound точно так же, как RM, процессорное время должно было отформатировать данные, незначительно по сравнению с stat вызовы. –  Gilles 'SO- stop being evil' 18.07.2013, 13:03

Для уменьшения количества внешних процессов Вы можете оптимизировать путем запущения пользовательского скрипта вместо надлежащего find. Обход каталога и stat() из каждого файла не может быть оптимизирован далеко, но только необходимо сохранить самый старый файл до сих пор в памяти.

Вот попытка в Perl:

find2perl -eval 'BEGIN { our ($filename, $oldest); }
    my @s=stat(_); if (! defined $::oldest || $s[9] < $::oldest) {
        $::oldest=$s[9]; $::filename = $File::Find::name }
    END { print "$::filename\n" }' | perl

В моих тестах, на умеренно большом каталоге (129 019 узлов), это на самом деле приблизительно на 50% медленнее, чем @StephaneChazelas "версия" Инструментов GNU, но можно найти, что это работает лучше в некоторых сценариях, специально для действительно больших каталогов.

0
27.01.2020, 23:39

Теги

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