LINUX.ORG.RU

Нужны маны по написанию демона.

 быстрый старт


0

1

Т.к. готовых тулзовин для странной синхронизации я так и не нашёл, то навелосипедил свою на скриптах. Но не устраивает низкая скорость и мутность. Решил переписать как демона, прошу порекомендовать годные маны (типа быстрый старт) про то как (по этапам):

  1. Написать демона
  2. Научить демона читать конфиги
  3. Научить демона принимать команды из консоли
  4. Правильно хранить данные/конфиги/бинарники своего приложения

Опционально

  1. Опакетить в deb

ПС: желательно наличие минималистичных примеров, которые можно копипастить и доводить до ума. Т.к. нет желания тратить время на полное раскуривание всего и вся.

ППС: аллергия на питон

★★★★★

Последнее исправление: ya-betmen (всего исправлений: 2)

пункты 1-2: смотри гайд из гугла. п. 3 там же должен быть(unix socket)

4. конфиги в $prefix/etc, бинарники демона в $prefix/sbin, клиентские бинарники в $prefix/bin, тулзы для миграции/апгрейда/крайне редкой процедуры в $prefix/libexec

TOXA ★★
()

По п.3 почитай про IPC, п.п. 1, 2 и 4 — вообще халява (K&R).

Eddy_Em ☆☆☆☆☆
()

всего две книги: Advanced Programming in the Unix Environment и The Art of Unix Programming.

val-amart ★★★★★
()

по приведённой ссылке - фееричное нечто. Откуда и возникает :

не устраивает низкая скорость и мутность

пока не научитесь формулировать задачу никакие маны не помогут.

нет желания тратить время на полное раскуривание всего и вся.

тогда лучше в Job

аллергия на питон

/демонический хохот в зале/

MKuznetsov ★★★★★
()
Ответ на: комментарий от crowbar

Я не хочу запускать это на JVM. Это элементарнейшая тулза, я написал её на скрипте, но это слишком медленно, поэтому и хочу что-то побыстрее и полегче.

ya-betmen ★★★★★
() автор топика

Нужны маны по написанию демона.

Так хочется некрономикон посоветовать, но это тех. раздел :(

cipher ★★★★★
()
Ответ на: комментарий от MKuznetsov

пока не научитесь формулировать задачу никакие маны не помогут

Что именно вам не ясно? Я совершенно чётко описал требуемое поведение за исключением ошибочных случаев, но там и так длинная портянка.

тогда лучше в Job

Если б хотел - давно бы нанял индуса. Или нескольких.

/демонический хохот в зале/

Мне не интересны ваши религиозные убеждения.

ya-betmen ★★★★★
() автор топика

Покажи свои скрипты, а мы поможем их ускорить и демонизировать.

anonymous
()

man inotifywait

inotifywait -rmq rootabc | while read x; do parse $x; done;

и где кот что ты навелосипедил?

anonymous
()
Ответ на: комментарий от anonymous

Ну блин, люди, вы хоть по ссылке пройдите и прочитайте задачу, прежде чем предлагать решение.

Если я выложу скрипты, то тут пойдёт обсуждение моих скриптов, а я топик не для этого создавал.

ya-betmen ★★★★★
() автор топика

Чувак, серьезно, это гуглится за 3 секунды на любом языке.

grouzen ★★
()
Ответ на: комментарий от ya-betmen

ходил читал - невнятно расплывчато. скрипты выложишь - понятнее будет чем тебя предложенное не устроило.

anonymous
()
Ответ на: комментарий от TOXA

Похоже я не слишком понятно выразился, сейчас меня мало интересует теоретическая составляющая вопроса. Мне нужен работающий код, несколько готовых сниппетов, которые я бы смог адаптировать под свои нужды.
Например, п1 гуглится, есть исходник демона, который делает ничего.
А вот п2 не гуглится, возможно для этого есть специальная библиотека или всё придётся писать самому? Это не моя область я не в курсе и у меня сейчас нет времени начинать с азов.
п3. Тоже наверняка можно воспользоваться готовой либой, но какой, как выбрать? Как использовать?

Собственно я потому и спросил тут, т.к. гугл не умеет оценивать пригодность книг или статей для копипастинга кусков в готовое приложение.

п4. Спасиба.

ya-betmen ★★★★★
() автор топика
Ответ на: комментарий от ya-betmen

Что именно вам не ясно? Я совершенно чётко описал требуемое поведение за исключением ошибочных случаев, но там и так длинная портянка.

видите ли, то что вы там описали - ближе к видению заказчика (поэтическое ЧТО ХОЧУ), после которого к нему приходит исполнитель и формализует до вида пригодного к реализации(реальное КАК МОЖЕТ БЫТЬ). После прений и рюмок чая появляется некое задание (валидируемое КАК ДОЛЖНО БЫТЬ) которое содержит 1/2 решения.

повторюсь, что " навелосипедил свою на скриптах. Но не устраивает низкая скорость и мутность" это результат кривой постановки задачи. И ув. anonymous заявивший «Покажи свои скрипты, а мы поможем их ускорить и демонизировать.» абсолютно ПРАВ - во первых будет ясно что и как вы там синхонизуете и в выборе каких средств ошиблись.

редко-редко для планирования файловых операций требуется тулз быстрее bash и что-то оригинальное - по сравнению со скоростью копирования прочее не столь существенно. 99,9% что все может быть решено имеющимися стандартными средствами

----

/демонический хохот в зале/

Мне не интересны ваши религиозные убеждения.

хохот вызван вашими «религиозными убеждениями»: аллергия на питон..тогда уж пишите сразу - принимаю решения исключительно на VB, ибо некогда «вникать в детали» :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Мне кажется всё это в нужно в тот тред.

результат кривой постановки задачи

А вы учитываете, что я сам ставил себе эту задачу и понимал чего хочу? Тем более в том топике я спрашивал готовую тулзу. Понимаете, готовую?

Хорошо, я знаю что у меня тормозит, может подскажете как сделать оптимальнее. Изменяется файл в исходном каталоге -> срабатывает inotify -> пинает мой скрипт -> скрипт парсит конфиг и определяет чего и куда ему синхронизовать -> сличает md5 файлов (они разные) -> перекидывает файл в целевой каталог -> и вот тут снова срабатывает inotify (натравленный на целевой каталог, т.к. нужна обратная синхронизация) -> скрипт поднимает конфиг целевого каталога, вот тут медленно, т.к. это файлик строк вида /path/to/target/file=/path/to/original/file (а их много) и определяет где у этого файлика папа -> сличает md5, но тут они уже равны и он ничего не делает.

Соответственно при создании/удалении каталогов по конфигу бегает sed и сносит/добавляет записи.

Что мне не нравится: скрипт дёргается при каждом изменении и поднимает все конфиги, если внезапно дёрнется 2 экземпляра sed на один файл, то прав будет последний. И то и другое решилось бы демоном, который во-первых всегда держал бы конфиг поднятым, а во-вторых ставил бы задания в очередь и мог бы разрулить их при пересечении.

Похожие геморрои и при обратной синхронизации, т.к. нужно учитывать откуда пришёл файл или приоритет каталогов если файл новый.

Я же не прошу решать за меня задачу, я спросил где найти простые примеры как написать демона.

ya-betmen ★★★★★
() автор топика
Последнее исправление: ya-betmen (всего исправлений: 1)

Если с С не знаком, скорее всего получится не демон для синхронизации, а генератор coredump'ов.

crowbar
()
Ответ на: комментарий от ya-betmen

А вы учитываете, что я сам ставил себе эту задачу и понимал чего хочу? Тем более в том топике я спрашивал готовую тулзу. Понимаете, готовую?

Хорошо, я знаю что у меня тормозит, может подскажете как сделать оптимальнее.

понимаю, пред-новогод, сорванные сроки (либо собственные ожидания) и всё такое..

Хорошо, я знаю что у меня тормозит, может подскажете как сделать оптимальнее. <skip «дальше истерика» />

поспокойнее пожалуйста

Что мне не нравится: скрипт дёргается

где блин этот эпический скрипт ????

Я же не прошу решать за меня задачу

нет, вы именно просите РЕШИТЬ ЗА ВАС ЗАДАЧУ. Разве нет ?! Позвольте, где-то приведён ваш вариант с пометкой «получилось вкось но работает» ??

MKuznetsov ★★★★★
()

1. man daemon 2. man confuse 3. man ipc 4. man fhs

ananas ★★★★★
()
Ответ на: комментарий от crowbar

Ну вот потому и интересуюсь откуда можно натырить готовых примеров и собрать из них то что нужно. Если писать всё самому, то у меня действительно выйдет глючно, а самое главное долго, т.к. на с++ последний раз писал когда учился в вузе и под ВинАПИ. Потом только портировал пару виджетов на новые версии кед.

ya-betmen ★★★★★
() автор топика

Итак, путём гугления нашёл вот это:

  1. Написать демона:
    http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html, тут всё понятно.
  2. Научить демона читать конфиги:
    нашёл библиотеку libconfig http://simplestcodings.blogspot.ru/2012/02/libconfig-to-read-configuration-fi..., достаточно хороший вариант?
  3. Научить демона принимать команды из консоли:
    как же я забыл по d-bus https://gist.github.com/dradtke/4949546. Только как правильнее сделать один бинарник для демона, и второй для управления или всё в одном, если демон запущен - передавать параметры, если не запущен ждать команды на запуск?
  4. Правильно хранить данные/конфиги/бинарники своего приложения:
    оказывается нужно было гуглить FHS.
ya-betmen ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.