Организация локального поиска файлов через locate — дешево и сердито

2017-02-10

В командной строке есть утилита locate, которая ежедневно сканирует файловую систему с помощью утилиты updatedb и позволяет быстро находить файлы на диске по названию. Мне часто удобнее искать не по всему диску, а только по домашней директории или вообще по каким-то отдельным папкам. Обычно я использую find, но, читая man updatedb я обнаружил что поиск можно организовать в локальную базу таким вот образом:

updatedb -l 0 -o db_file -U source_directory

db_file — куда сохранять, source_directory — что сканировать.

Захотелось сделать свой локальный кэшируемый поисковик. Задача — сканировать домашнюю папку /home/vik, кэш хранить в /home/vik/.local/share/mlocate.db (еще одна полезная папка — ~/.local) и иметь возможность задать не locate а «local locate» — llocate.

Сделал отдельный скрипт на сканирование диска:

~/bin/locate/local_updatedb

С содержимым:

#!/bin/sh
updatedb -l 0 -o /home/vik/.local/share/locate.db -U /home/vik -n ".git .bzr .hg .svn .dropbox.cache"

Расшифровка ключей:

-l 0 не проверять права на доступ к базе данных

-o — где сохранить базу данных

-U — что сканировать

-n — какие имена игнорировать (очень удобно, чтобы не получать в поиске имен из папок контроля версий).

Дал скрипту права на запуск:

$ chmode a+x ~/bin/locate/local_updatedb

Обновлялку вынес в крон:

$ crontab -e

и вписал в файл:

@reboot /home/vik/bin/locate/local_updatedb 

«на каждой перезагрузке запускать сканирование диска»

Внимание: если вы редактируете crontab-файл — в конце нужно обязательно оставить пустую строку — иначе не заработает.

Последний штрих — добавил alias llocate в ~/.bash_aliases

alias llocate='locate -d /home/vik/.local/share/mlocate.db'

Пример:

vik@firefly:~$ llocate Войников

/home/vik/av/mp3/Виктор Войников - Честный стрелок.mp3
/home/vik/av/mp3/1_сборки/pulsar/Модель Для Сборки - Виктор Войников - Резонанс.mp3
/home/vik/book/hub/одессика/1914_Вся Одесса_Войников_737.png
...
/home/vik/zbox/yandex/Яндекс.Фотки/memorial Войников_new.jpeg.jpg

weatherman или сбор статистики о погоде через METAR

2013-03-26

Давно мечтал про скрипт, накапливающий статистику по изменению температуры и давления. Год назад, написал крошечный парсер на питоне, выгребающий из интернета metar-файл для моего города и парсящий из него давление и температуру.

Работает он так:

vik@firefly:~/blog$ python ~/bin/metar.py
на 22:00
-02 °C 1010 гПа

В конки встроен с помощью строки:

${offset 140}За бортом:${color green} ${execi 600 python /home/vik/bin/metar.py | tail -n 1 }${color }

Краткие пояснения по тому, как я пришел к идее (фактически склепал на коленке — питон хорош в том числе тем, что позволяет «думать руками»), я вынес в приложение.

Дальше дело застопорилось. То ли мне не хватило вренмени, то ли что-то еще. Скорее всего, я хотел реализовать весь процесс одним скриптом и в итоге не нашел для этого времени.

Пару дней назад, разбирая conky-систему, нашел этот скрипт и кое-что в нем поправил.

Сегодня меня (после очередного скачка атмосферного давления, на которое мое серое вещество не очень хорошо реагирует) осенило — раз скрипт выдает данные (и справляется неплохо, не смотря на примитивность) — почему бы не перенаправить их в файл и завязать все это на крон? Получится именно такой сборщик статистики, которого мне хотелось. А сам файл, можно будет потом скормить gnuplot’у, ну или libreoffic’у в худшем случае.

Сказано-сделано.

описание процесса


%d такие блоггеры, как: