суббота, 19 марта 2011 г.
понедельник, 21 февраля 2011 г.
Слава Роботам! лезет в ТОП
Удивительно, но мониторинг поисковых запросов показывает, что ссылки на этот блог очень неплохо индексируются. Первая страница по все более неожиданным запросам. Так рано или поздно и "Чак Норрис" даст эффект. А все это говорит лишь об одном, что самое правильное - это верить в себя и просто делать. Делать, делать, делать - что-нибудь, да получится.
воскресенье, 13 февраля 2011 г.
Мониторинг директорий в linux с использованием inotify: все выше и выше
В прошлый раз мне не хватило терпежу сделать все более менее культурно. Но неудобно было, что реагирует программа на любые изменения, а руками прописывать все в коде - еще хуже.
Пришлось доточить до приличного состояния. Перво-наперво обнаружил глюк с зомбями, которые стали собираться в толпы после каждого вызова. Добавил wait(), это решило проблему.
Затем, добавил опции командной строки, мониторинг с использованием флагов и фильтрацию по маске или регулярному выражению. Для этого погрузился в документацию по glibc.
Результат:
Последняя версия доступна тут.
Пришлось доточить до приличного состояния. Перво-наперво обнаружил глюк с зомбями, которые стали собираться в толпы после каждого вызова. Добавил wait(), это решило проблему.
Затем, добавил опции командной строки, мониторинг с использованием флагов и фильтрацию по маске или регулярному выражению. Для этого погрузился в документацию по glibc.
Результат:
kilork@pantogan:~/projects/notify$ ./inotify -?
Usage: inotify [OPTION...] CMD DIR1 [DIR2 ... DIRN]
inotify - simple file monitoring utility
-s, --silent Don't produce any output (no effect to
subprogramms)
-v, --verbose Produce verbose output
-f, --filter=FILTER Filter FILTER input on certain files
-i, --ignore Ignore case where possible
-r, --regular Filter use regular expression expansion
-w, --wildcard Filter use wildcard expansion (*.c for example)
-e, --events=EVENTS Events to monitor
Possible flags for EVENTS:
a - file was accessed
A - metadata (permissions, timestamps, etc) changed
W - file opened for writing closed
N - file not opened for writing closed
c - file/directory created
d - file/directory deleted
s - watched file/directory was itself deleted
m - modify file
v - watched file/directory was itself moved
f - file moved out of watched directory
t - file moved into watched directory
o - file was opened
-?, --help Give this help list
--usage Give a short usage message
-V, --version Print program version
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
Report bugs to <kilork@yandex.ru>.Последняя версия доступна тут.
среда, 9 февраля 2011 г.
Мониторинг директорий в linux с использованием inotify
Совсем недавно я экспериментировал с dnotify - http://kilork.blogspot.com/2011/01/linux-dnotify.html. Штука уже вполне успешно работает, не требует кушать, но все же что-то не дает покоя. Ах вот оно что, интерфейс то устаревший, нормальные люди так не работают. Приходится признать, в своих познаниях по ядерным интерфейсам я отстаю лет на 10. Ну, надо как-то наверстывать.
Итак, inotify. Логичное развитие dnotify. Проще, лучше, надежнее. Вечер перед монитором, и готова новая версия утилиты для мониторинга:
Компилируется также просто, как и в прошлый раз:
Ну и поведение программки не отличается:
Исходные коды доступны в hg-репозитории по адресу http://kilork.org/public/notify/.
З.Ы. При первой публикации не хватало wait(), что приводило к толпам зомби, поправил.
Итак, inotify. Логичное развитие dnotify. Проще, лучше, надежнее. Вечер перед монитором, и готова новая версия утилиты для мониторинга:
Компилируется также просто, как и в прошлый раз:
gcc inotify.c -o inotify
Ну и поведение программки не отличается:
./inotify "echo hello" .по прежнему запускает слушание текущей директории с выводом 'hello' при любом телодвижении в этой директории. Зато есть масса плюсов, да и просто, код значительно легче читается.
Исходные коды доступны в hg-репозитории по адресу http://kilork.org/public/notify/.
З.Ы. При первой публикации не хватало wait(), что приводило к толпам зомби, поправил.
понедельник, 7 февраля 2011 г.
Опции монтирования NFS через Wi-Fi
Вот такой неоднозначный пост. Я продолжаю искать оптимум и после длительной эксплуатации свел число опций с одной стороны к минимуму, с другой - к стабильности работы:
Вот собственно и все опции, последняя добавка - tcp, без нее от версии к версии ядра все сильно плавало, сейчас вполне реально гонять данные по 10 Мб/сек через две стены без затухания скорости.
nolock,rw,hard,intr,tcp
Вот собственно и все опции, последняя добавка - tcp, без нее от версии к версии ядра все сильно плавало, сейчас вполне реально гонять данные по 10 Мб/сек через две стены без затухания скорости.
суббота, 29 января 2011 г.
Мониторинг директорий в linux с использованием dnotify
Сижу, разрабатываю себе на javascript, но вот незадача, после каждой правки надо зайти в командную строку и запустить сборку проекта. И только потом можно наконец оценить результаты трудов. Мелочь, но раз за разом лишнее нажатие начинает раздражать. Привык ведь уже в eclipse - все подкомпилируется в фоне. А вот бы штуку, которая бы смотрела, меняется ли что-то в директории, и по изменении - запускала бы команду.
Конечно, решения из сети - это что-то. Скрипты в bash, которые делают ls директории, затем diff - и если различается, то - запускаем команду. Это круто. Постепенно находим очевидную вещь - сообщить нам об изменении директории должна ОС. Есть и механизм - dnotify. Ищем дальше, находим пример в 10 строк, как это пишется на C. Ну а чем мы хуже, добавим только чуть-чуть логики, чтобы польза была от утилитки.Несколько часов мудоханий Полчаса интеллектуального труда и результат готов:
Самая прелесть в этом, что компилируется все в одну команду:
Используется следующим образом: первый аргумент - это команда для выполнения, остальные - директории, при изменении который будет позвана команда. Например:
запускает слушание текущей директории и при изменении в ней скажет нам "hello".
Больше всего времени я потратил на то, чтобы заставить утилитку игнорировать события, пока работает дочерний процесс (в процессе компиляции в директории может много чего поменяться, поэтому изменения в процессе компиляции мы игнорируем, хоть это и не совсем корректно, но для нашей утилиты в 5 строчек - пойдет). Для этого пришлось делать fork, и ловить SIGCHLD. Вроде работает, немного фана получено - и снова за javascript...
Исходные коды доступны в hg-репозитории по адресу http://kilork.org/public/notify/.
З.Ы. Добавил статью по inotify - http://kilork.blogspot.com/2011/02/linux-inotify.html.
Конечно, решения из сети - это что-то. Скрипты в bash, которые делают ls директории, затем diff - и если различается, то - запускаем команду. Это круто. Постепенно находим очевидную вещь - сообщить нам об изменении директории должна ОС. Есть и механизм - dnotify. Ищем дальше, находим пример в 10 строк, как это пишется на C. Ну а чем мы хуже, добавим только чуть-чуть логики, чтобы польза была от утилитки.
Самая прелесть в этом, что компилируется все в одну команду:
gcc dnotify.c -o dnotify
Используется следующим образом: первый аргумент - это команда для выполнения, остальные - директории, при изменении который будет позвана команда. Например:
./dnotify "echo hello" .
запускает слушание текущей директории и при изменении в ней скажет нам "hello".
kilork@pantogan:~/projects/dnotify$ ./dnotify "echo hello" . setting handlers: . done. monitoring started...... в другом терминале ...
kilork@pantogan:~/projects/dnotify$ touch dnotify.c... возвращаемся в первый терминал ...
3 hello
Больше всего времени я потратил на то, чтобы заставить утилитку игнорировать события, пока работает дочерний процесс (в процессе компиляции в директории может много чего поменяться, поэтому изменения в процессе компиляции мы игнорируем, хоть это и не совсем корректно, но для нашей утилиты в 5 строчек - пойдет). Для этого пришлось делать fork, и ловить SIGCHLD. Вроде работает, немного фана получено - и снова за javascript...
Исходные коды доступны в hg-репозитории по адресу http://kilork.org/public/notify/.
З.Ы. Добавил статью по inotify - http://kilork.blogspot.com/2011/02/linux-inotify.html.
Мercurial.ru
Подбор ссылок по mercurial - http://mercurial.ru/
Надеюсь, сайт будет развиваться и обрастет со временем новыми русскоязычными сервисами по этой славной системе хранения версий.
Надеюсь, сайт будет развиваться и обрастет со временем новыми русскоязычными сервисами по этой славной системе хранения версий.
Подписаться на:
Сообщения (Atom)
