Portál AbcLinuxu, 9. května 2025 21:49

Dotaz: pokud se soubor zmenil, neco udelej

10.9.2007 09:05 David | skóre: 21 | Praha
pokud se soubor zmenil, neco udelej
Přečteno: 480×
Odpovědět | Admin
Ahoj, potreboval bych napsat v bashi skript, ktery bude delat nasledujici:
1. na disku je soubor soubor.txt
2. skript ma delat: pokud se soubor za poslednich 24h zmenil, udelej neco (echo "Soubor byl zmenen")
popr: mi muzete ve zkratce vysvetlit jeky je rozdil mezi:
Access time
Modify time
Change time
Diky za kazdy napad/radu, David
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

michich avatar 10.9.2007 09:23 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Odpovědět | | Sbalit | Link | Blokovat | Admin
popr: mi muzete ve zkratce vysvetlit jeky je rozdil mezi:
Access time
Modify time
Change time
man 2 stat
10.9.2007 09:35 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
man 2 stat
No manual entry for stat in section 2
10.9.2007 10:03 Ash | skóre: 53
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
10.9.2007 10:25 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
no nic, tohle se nejak zacyklilo :), dulezita je pro me ale odpoved na prvni cast otazky. Diky
10.9.2007 10:57 Ash | skóre: 53
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Není mi zřejmé rozhraní mezi první a druhou částí, ale odhadem: v cronu bych dal záznam, že se má spouštět každý den skript "kontrola.sh". Ten by se podíval na ctime nebo mtime (tady už je otázka, co si představujete pod pojemem "změnil" :D více vizte man 2 stat :D a pokud by byl <= 24h tak by udělal potřebnou akci.
10.9.2007 11:17 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
ten soubor je konfigurak apache a ja potrebuju, pokud se tam neco pripsalo, tak aby se apache restartnul, ted je myslim ta ZMENA jasna
10.9.2007 11:29 outsider
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
To, co ten konfigurak zmeni, pak zavola apachectl -k graceful
10.9.2007 11:32 outsider
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
...anebo rovnou restart, zalezi na vas, co vlaste chcete
10.9.2007 11:41 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Ale jo, me jde jen o to jak napsat tu podminku, ze do souboru nekdo za poslednich 24hodin neco zapsal. David (vobcas mam pocit, ze vyjadrovat se obecne je uplne k nicemu, pac to pak vede k diskusim o necem, na co jsem se neptal, za to se samozrejme omlouvam).
10.9.2007 11:58 Ash | skóre: 53
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
O tu obecnost tak nejde, jen nebyl zřejmý význam slov "potřebuji v bashi napsat skript, který". Nebylo zřejmé, že ho máme napsat my -- mysleli jsme, že ho na základě rad napíšete Vy :) Řešení založené na kontrole md5sumou uvedl dvh níže, vypadá dobře, možná bych přidal uvozovky a ubral sed.
10.9.2007 11:59 outsider
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Rikam, ze na to jdete spatne :-)

Ten, kdo zmeni konfigurak, je zodpovednej za restart apache.

Pripadne muzete apache restartovat (-k graceful) pokazde treba o pulnoci, i kdyz se nic nezmenilo. Pokud rotujete logy, tak se apache taky restartuje (a pri te prilezitosti se nacte novy konfigurak!)...

No ale pokud trvate na tom svem nestastnem zadani, tak me napada akorat osklive:

find /etc/httpd -name httpd.conf -mtime -1 -exec apachectl -k graceful \;
Milan 10.9.2007 15:08 Milan "Nemo" Cingroš | skóre: 27 | blog: Nautilus | Plzeň
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Napsal jsem to na linuxwiki, tak se podívejte tam: atime, ctime, mtime.
Soutěžte na české LinuxWiki a vyhrajte plyšového Tuxe.
10.9.2007 11:07 ajikdpoe | skóre: 23 | blog: dvh
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash
HASH=`md5sum soubor.txt | sed 's/  /_/'`
OLD=`cat soubor.md5 2>/dev/null`
if [ "$HASH" != "$OLD" ]; then
  echo $HASH > soubor.md5
  echo "Soubor se zmenil nebo je tento skript spusten poprve!"
fi
(vyzaduje r/w filesystem)
10.9.2007 13:10 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: pokud se soubor zmenil, neco udelej
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já bych se vykašlal na všechny ty obezličky co tu kdo navrhoval a použil bych inotifytools.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub

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.