Portál AbcLinuxu, 5. května 2025 05:04

Dotaz: incrond vykona akciu len raz

8.5.2013 15:02 drunkezz | skóre: 34 | blog: kadeco
incrond vykona akciu len raz
Přečteno: 615×
Odpovědět | Admin

Ole

doslo k tomu ze som pouzil incrond ako /etc/passwd "monitoring"

incrontab je nastaveny takto

/etc/passwd IN_MODIFY /root/mailpass

/root/mailpass robi len

echo "zmeneny passwd file" | mail -s na@mail.do

 

No a problem je ten ze vytvorim usera incrond zachyti event a posle mi mail ..ale uz ked ho zmazem tak ziadny event sa nedetekjuje...a ani dalsi event. Ked restartnem incron tak najblizsi prvy event zasa zaregistruje ale uz ziadny dalsi....

any ideas? thnx

D..

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.5.2013 16:43 chrono
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Odpovědět | | Sbalit | Link | Blokovat | Admin
Predpokladám, že ten program, ktorý upravuje mailpass súbor, pôvodný súbor premenuje, vytvorí nový súbor a pôvodný súbor, teraz už premenovaný vymaže, takže incrond už žiadne ďaľši informácie o tom súbore nedostane, pretože ten súbor už neexistuje. (prípadne sa môže najskôr vytvoriť nový súbor a ten sa potom premenuje, každopádne dôležité je to, že originálny súbor sa vymaže)

Ako sa to dá riešiť sa píše pri inotify a/alebo programoch/knižniciach, ktoré inotify využívajú (v podstate sa sleduje adresár a nie súbor).
8.5.2013 20:33 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

ej veduci neviem ci do dobreho rubes...mailpass je akcia na event IN_MODIFY....

z man inotify

IN_MODIFY         File was modified (*).

a imo sa meni file deskriptor pri tom a teda ziadne premenovavanie alebo daco....

D.

8.5.2013 21:04 potato
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Mění se při té změně inode souboru (viz stat(1)), nebo nemění? Pokud ano, tak je to přesně, jak píše chrono.
8.5.2013 22:50 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

root@phernet:~# stat /etc/passwd
File: `/etc/passwd'
Size: 1091            Blocks: 4          IO Block: 1024   regular file
Device: fe00h/65024d    Inode: 47498       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-05-08 22:40:11.000000000 +0200
Modify: 2013-05-08 22:40:07.000000000 +0200
Change: 2013-05-08 22:40:07.000000000 +0200


root@phernet:~# echo lopata >> /etc/passwd


root@phernet:~# stat /etc/passwd
File: `/etc/passwd'
Size: 1098            Blocks: 4          IO Block: 1024   regular file
Device: fe00h/65024d    Inode: 47498       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-05-08 22:40:11.000000000 +0200
Modify: 2013-05-08 22:40:40.000000000 +0200
Change: 2013-05-08 22:40:40.000000000 +0200
root@phernet:~#

inode sa nemeni...par ostatnych parametrov ano....problem je ze takyto event incrond zachyti raz a dost..

D.

8.5.2013 23:24 chrono
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
To niekto naozaj zapisuje do toho súboru pomocou echo a nepoužíva na úpravu programy na to určené? (tie totiž vytvárajú nový súbor)
8.5.2013 23:29 potato
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Pokud je echo lopata ten program, co ti mění passwd, tak ti vzniká nevalidní passwd.

Pokud se ti mění passwd nějak jinak, tak je irelevantní, co dělá echo lopata.
9.5.2013 04:27 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

Ale vsak je uplne irelevantne akym sposobom dochadza k modifikacii fajlu...a ci je alebo nieje passwd validny....dolezite je ze nastal IN_MODIFY event....

pavlix avatar 9.5.2013 09:41 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Ale vsak je uplne irelevantne akym sposobom dochadza k modifikacii fajlu...
Dokud si budeš toto myslet, tak tady v poradně všichni ztrácejí čas.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.5.2013 11:03 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

Aha..tak zle ja uvazujem...ak sa da mozes vysvetlit? Alebo naviest na nejaku doku? Dik

pavlix avatar 9.5.2013 11:46 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Vysvětlení problému je hned v prvním příspěvku. Není modifikace jako modifikace, mnoho nástrojů soubor nahrazuje (redirect shellu to samozřejmě nedělá, to je de facto nízkoúrovňová operace) a tudíž ten soubor, který sleduješ, už neexistuje.

Správně se inotify v aplikacích používá tak, že sleduješ i takovéto změny a reaguješ na ně. Jenže nemůžeš sledovat změny na souboru v době, kdy neexistuje. Zřejmě incrond neřeší správně to, co chceš řešit ty.

Nějaké zdroje:

http://bts.aiken.cz/view.php?id=338

http://www.splitbrain.org/blog/2011-01/07-watcher_a_recursive_incron_alternative

Bohužel nic z toho podle mě neřeší tvůj problém. Jediné, co mě napadá je ugly hack, kdy na vytvoření toho souboru zareaguješ restartem incrond. Ale je neskutečně pitomé, že takový nástroj nemá (pokud vím) volbu na sledování souboru od jeho vytvření, ale jen od startu démona.

Vypadá to jako typický tool, když kerneláři potřebují vytvořit proof of concept userspace nástroj.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.5.2013 12:27 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

Dikidikidiki

D.

9.5.2013 12:14 chrono
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
1. Rovnaké problémy s inotify sa tu už riešili. ;)

2. Niečo takéto sa môže urobiť napr. tak, že sa sleduje adresár /etc (napr. pre udalosť IN_CLOSE_WRITE) a v obsluhe tej udalosti sa potom kontroluje, či ide o súbor, ktorá nás zaujíma. Incrond nepoužívam, ale celé by to mohlo vyzerať nejako takto: /etc IN_CLOSE_WRITE /root/mailpass $# a skript mailpass potom skontroluje, či je prvý parameter passwd (a teda, či bol po zapisovaní zatvorený súbor s názvom passwd)
9.5.2013 12:28 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

Dikidikidiki

Aj pavlixovi hore....

D.

pavlix avatar 9.5.2013 12:40 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Jestli to s incrond rozchodíš, tak nám to nezapomeň napsat :).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
9.5.2013 13:10 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

Roger wilco;)

D

9.5.2013 01:15 Lukas Dz.
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz
Inode sa urcite meni a samotny kernel po zmazani suboru zmaze aj inotify na ten subor. Pokial to app nespracuje spravne, tak skonci bez inotify.
phoebe ~ # ls -i /etc/passwd
1211442 /etc/passwd

phoebe ~ # useradd niekto

phoebe ~ # ls -i /etc/passwd
1205146 /etc/passwd

phoebe ~ # userdel niekto

phoebe ~ # ls -i /etc/passwd
1205147 /etc/passwd
Prikaz "tail" riesi tento problem cez prepinac "--follow=name" (, alebo "-F"). Incrond bude mat urcite nieco podobne spomenute v dokumentacii. Incrond som naposledy pouzival dost davno, takze z hlavy to neviem a uz je dost neskoro na vrtanie sa v dokumentacii.

Cela problematika ohladom inotify si vyzaduje iste pochopenie :) vid:

Q: What is the difference between IN_MODIFY and IN_CLOSE_WRITE?
The IN_MODIFY event is emitted on a file content change (e.g. via the write() syscall) while IN_CLOSE_WRITE occurs on closing the changed file. It means each change operation causes one IN_MODIFY event (it may occur many times during manipulations with an open file) whereas IN_CLOSE_WRITE is emitted only once (on closing the file). zdroj.


Necaka incrond nejaky cas, nez obnovi sledovanie ?

The following bits may be set in the mask field returned by read(2):
IN_IGNORED
Watch was removed explicitly (inotify_rm_watch(2)) or automatically (file was deleted, or file system was unmounted). zdroj.


Chape incrond eventu pri zmazani suboru ?

Lukas
9.5.2013 04:33 drunkezz | skóre: 34 | blog: kadeco
Rozbalit Rozbalit vše Re: incrond vykona akciu len raz

Cau Lukas..otestim to teda na IN_ALL_EVENTS....uvidim

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.