kontrola obsahu uctu na FTP serveru
Jirka Kosina
jikos na jikos.cz
Pondělí Listopad 4 18:54:05 CET 2002
On Mon, 4 Nov 2002, Tomas Vida wrote:
> > K tomu muzete pouzit mechanismy, ktere umoznuji hlidat zmeny v
> > urcitych souborech/adresarich, a tyto zmeny hlasit.
> > Muzete zkusit fam, ale ten je udajne pri velkem provozu trosku
> > nestabilni. Osobne bych to resil pres dnotify (viz
> > /usr/src/linux/Documentation/dnotify.txt).
> A nemuzete mi s tim trosku pomoct? Na ten doc jsem se samozrejme dival,
> ale nevim, jak to pouzit. Ani FAM se mi nepodarilo nijak pouzit. Nejde o
> zadny velky provoz. Potrebuju sledovat 1 adresar vcetne podadresaru, kde
> bude max. 20 souboru a denne se to muze treba 4x zmenit.
Primo v te dokumentaci k dnotify mate ukazkovy priklad, jak se to pouziva.
Udelejte si nejaky takovyhle program
dnot.c:
#define _GNU_SOURCE
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
static volatile int event_fd;
static void handler(int sig, siginfo_t *si, void *data)
{
event_fd = si->si_fd;
}
int main(void)
{
struct sigaction act;
int fd;
act.sa_sigaction = handler;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
sigaction(SIGRTMIN, &act, NULL);
fd = open(".", O_RDONLY);
fcntl(fd, F_SETSIG, SIGRTMIN);
fcntl(fd, F_NOTIFY, DN_MODIFY|DN_CREATE|DN_MULTISHOT);
for (;;) {
/* pockame si na signal */
pause();
printf("Na filedeskriptoru %d nastala udalost\n",event_fd);
}
}
Zkompilujte si ho (gcc dnot.c -o dnot) a pak si ho v danem adresari
spustte. Pokazde, kdyz bude v tom adresari pak vytvoren soubor/adresar,
dozvite se to signalem.
Problem je, chcete-li to sledovat i ve vsech podadresarich, protoze to
dnotify sam od sebe neumi. Budete si muset tedy pomoci
opendir()/readdir()/closedir() pri kazde zmene projit adresarovou
strukturu, abyste zjistil co se zmenilo, a na nove adresare opet pouzit
dnotify mechanismus.
Ovsem pokud ten system skutecne nevykazuje nejakou extremni zatez, muzete
zkusit pouzit ten fam, mam pocit, ze ho mnoho lidi z teto konference
uspesne pouziva (ja pouzivam dnotify), a s pripadnymi problemy vam treba
nekdo pomuze.
--
JiKos.
Další informace o konferenci Linux