/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
cron og midnight commander's editor
Fra : Michael Jenner


Dato : 26-11-00 11:13

Syntes lige jeg ville dele den her.

Vixie's cron pakke i Redhat indlæser filer fra bl.a. /etc/cron.d/ hvert
minut. Fint - jeg oprettede et job "backup" i /etc/cron.d/ med Midnight
Commander (MC) og regnede med at alt var fint. Det anbefales, så vidt
jeg husker fra LinuxStandardBase at man ikke retter /etc/crontab
direkte, men opretter nye cron jobs i form af filer i /etc/cron.d - så
jeg gjorde det så godt jeg kunne

Det virkede bare ikke. Problemet viste sig at være at cron checker
/etc/cron.d/ bibliotekets timestamps - hvis modify (eller change) ikke
er ændret undersøges biblioteket ikke. MC opdaterer desværre ikke
timestamps på /etc/cron.d's inode - kun på de filer den har editeret ...
hmmm.

En løsning er at køre "touch /etc/cron.d" efter rettelser på cron.d
filer med MC. Jeg eksperimenterede lidt - se uddrag fra min history fil
nedenfor. Kommentarer udbedes! Er det MC eller emacs der opfører sig
korrekt - og hvorfor ? Kan man få MC til at opdatere directory-inoden's
timestamps på en smart måde så brugeren ikke behøver at huske diverse
ekstra kommandoer ?

Mvh Michael

**************************************
inodes: mc and cron
**************************************

Test scenario.

testdir ---- test
|
|__ test2

File "test" is edited by emacs first, then inodes are checked.
Next, mc is used to edit "test2" and inodes are again checked.

First the inodes are as follows:

[mj@thor testdir]$ stat .
File: "."
Size: 4096 Filetype: Directory
Mode: (0775/drwxrwxr-x) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 338267 Links: 2
Access: Sat Nov 25 12:18:59 2000(00000.00:05:50)
Modify: Sat Nov 25 12:16:35 2000(00000.00:08:14)
Change: Sat Nov 25 12:16:35 2000(00000.00:08:14)

[mj@thor testdir]$ stat test
File: "test"
Size: 0 Filetype: Regular File
Mode: (0664/-rw-rw-r--) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 226071 Links: 1
Access: Sat Nov 25 12:15:54 2000(00000.00:09:10)
Modify: Sat Nov 25 12:15:54 2000(00000.00:09:10)
Change: Sat Nov 25 12:16:35 2000(00000.00:08:29)

[mj@thor testdir]$ stat test2
File: "test2"
Size: 0 Filetype: Regular File
Mode: (0664/-rw-rw-r--) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 226162 Links: 1
Access: Sat Nov 25 12:16:13 2000(00000.00:09:03)
Modify: Sat Nov 25 12:16:13 2000(00000.00:09:03)
Change: Sat Nov 25 12:16:35 2000(00000.00:08:41)


______________________________

Now test is changed using emacs (version 20.5.1):


[mj@thor testdir]$ stat .
File: "."
Size: 4096 Filetype: Directory
Mode: (0775/drwxrwxr-x) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 338267 Links: 2
Access: Sat Nov 25 12:26:20 2000(00000.00:00:05)
Modify: Sat Nov 25 12:26:20 2000(00000.00:00:05)
Change: Sat Nov 25 12:26:20 2000(00000.00:00:05)

[mj@thor testdir]$ stat test
File: "test"
Size: 7 Filetype: Regular File
Mode: (0664/-rw-rw-r--) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 338269 Links: 1
Access: Sat Nov 25 12:26:20 2000(00000.00:00:22)
Modify: Sat Nov 25 12:26:20 2000(00000.00:00:22)
Change: Sat Nov 25 12:26:20 2000(00000.00:00:22)

[mj@thor testdir]$ stat test2
File: "test2"
Size: 0 Filetype: Regular File
Mode: (0664/-rw-rw-r--) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 226162 Links: 1
Access: Sat Nov 25 12:16:13 2000(00000.00:10:40)
Modify: Sat Nov 25 12:16:13 2000(00000.00:10:40)
Change: Sat Nov 25 12:16:35 2000(00000.00:10:18)

______________________________

Now test2 is changed using mc (version 4.5.42):

[mj@thor testdir]$ stat .
File: "."
Size: 4096 Filetype: Directory
Mode: (0775/drwxrwxr-x) Uid: ( 500/ mj) Gid: (
500/ mj)
Device: 3,6 Inode: 338267

 
 
Lars Kongshøj (26-11-2000)
Kommentar
Fra : Lars Kongshøj


Dato : 26-11-00 13:05

Modify-tidspunktet for et katalog ændres da vist kun, hvis der rent
faktisk skrives til kataloget, for eksempel hvis en fil oprettes eller
slettes. Hvis visse redigeringsprogrammer alligevel får ændret
modify-tidspunktet kan man jo gætte på, at de opretter temporære filer i
kataloget under redigeringen.

--
Lars Kongshøj

Michael Jenner (26-11-2000)
Kommentar
Fra : Michael Jenner


Dato : 26-11-00 21:26

Lars Kongshøj wrote:

> Modify-tidspunktet for et katalog ændres da vist kun, hvis der rent
> faktisk skrives til kataloget, for eksempel hvis en fil oprettes eller
> slettes. Hvis visse redigeringsprogrammer alligevel får ændret
> modify-tidspunktet kan man jo gætte på, at de opretter temporære filer i
> kataloget under redigeringen.

Ok. Emacs opretter jo netop de der ~ filer som backup - så ved en
tilfældighed har det virket - da jeg manuelt har slettet dem hver gang jeg
har ændret en fil i /etc/cron.d

Hmmm ... hvis det er korrekt, så må det jo være vixie-cron som er "broken
by design" - eller er det bare mig der bruger det forkert ?

Mvh Michael



Klaus Alexander Seis~ (26-11-2000)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 26-11-00 21:36

Michael J skrev:

> Hmmm ... hvis det er korrekt, så må det jo være vixie-cron som
> er "broken by design" - eller er det bare mig der bruger det
> forkert ?

Det samme sker vist hos mig, det har bare aldrig været et problem -
måske fordi min editor (jed) også laver backupfiler~.

Jeg har ikke kigget i sourcen til vixie-cron, men jeg synes at den
burde

· tjekke de filer der var til stede under opstart

· tjekke om /etc/cron.d/'s inode er blevet ændret

så ville den vel være på den sikre side?


// Klaus

--
><>°

Michael Jenner (26-11-2000)
Kommentar
Fra : Michael Jenner


Dato : 26-11-00 22:40

Klaus Alexander Seistrup wrote:

> Michael J skrev:
>
> > Hmmm ... hvis det er korrekt, så må det jo være vixie-cron som
> > er "broken by design" - eller er det bare mig der bruger det
> > forkert ?
>
> Det samme sker vist hos mig, det har bare aldrig været et problem -
> måske fordi min editor (jed) også laver backupfiler~.
>
> Jeg har ikke kigget i sourcen til vixie-cron, men jeg synes at den
> burde
>
> · tjekke de filer der var til stede under opstart
>
> · tjekke om /etc/cron.d/'s inode er blevet ændret
>
> så ville den vel være på den sikre side?

Jeg forsøgte at editere en /etc/cron.d/fil via crontab - måske ville
crontab sørge for touch'e /etc/cron.d - desværre også uden held.

Iflg. en man-side ændrer read, write og utime (+ lidt flere)
funktionskald (muligvis fra libc) access-tiden, mens write (+ lidt
flere) funktionskald ændrer modify tiden. Endeligt ændres change-tiden
hvis directory-inoden ændres, dvs:

access-timestamp: read, write, utime m.fl.
modify-timestamp: write, m.fl.
change-timestamp: når inode data ændres opdateres denne.

Det lader altså til at vixie-cron ikke kan nøjes med at checke
directory-inodens modify-timestamp - da den ikke opdateres. Den kunne
checke access-timestamp'et - men det ville vel betyde at den skulle
checke indholdet af /etc/cron.d hvert minut (da cron jo selv læser
biblioteket ??) - hvilket jo ikke giver nogen besparelse.

En brugbar løsning er muligvis at få crontab til at touch'e /etc/cron.d
når den afslutter - efter den blev kaldt med "-e" parametren, men ...

Mvh Michael




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408903
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste