crontab es regebbi fajlok torlese

Fórumok

Sziasztok,

crontab -e
paranccsal a
30 7 * * * /usr/bin/find /share/tmp -mtime +1 -exec /usr/bin/rm {} \;

sort irtam be, de reggel 7:30-kor nem csinalt semmit.
(a cron mukodik, mert a
25 7 * * * /usr/bin/bdf >/share/tmp/bdf_before_removal.txt;
lefut).
Megmaradtak a Marcius 22-en letrehozott fajlok.
Ha jol tudom, a -mtime +1 az 1 napnal regebbi fajlokat torli.

2097365 Mar 22 03:37 OSS_
2097369 Mar 22 03:38 OSS_
2097312 Mar 22 03:40 OSS_
2097224 Mar 22 03:41 OSS_
2097214 Mar 22 03:42 OSS_
2097225 Mar 22 03:43 OSS_
2097261 Mar 22 03:45 OSS_
2097249 Mar 22 03:46 OSS_
2097217 Mar 22 03:47 OSS_
2097293 Mar 22 03:48 OSS_
2097340 Mar 22 03:50 OSS_
2097292 Mar 22 03:51 OSS_
2097412 Mar 22 03:52 OSS_
2097391 Mar 22 03:53 OSS_
2097344 Mar 22 03:54 OSS_
2097272 Mar 22 03:56 OSS_
2097244 Mar 22 03:57 OSS_
2097289 Mar 22 03:58 OSS_
2097265 Mar 22 03:59 OSS_
2097288 Mar 22 04:01 OSS_
.
.
.
Tudna valaki segiteni, hogyan toroljem pl. a 12 oranal regebbi fajlokat a /share/tmp konyvtarbol?
Koszonom a segitseget.

ardi

Hozzászólások

-cmin +720 ez törli a 12 óránál régebbieket és a -cmin -720 pedig a 12 órán belülieket.

A {} elől és mögül hiányzik egy-egy ' szerintem meg lehet egy -f is kellene bele... Nálam így néz ki igaz nem HP unixon:
/bin/rm -f '{}'

koszi szepen,

azt hiszem, a find eleg hulyen viselkedik.
Ha jol tudom, az -mtime +1 az 1 napnal (pontosabban 24 oranal regebbi)/az -mtime -1 az 1 napnal "fiatalabb"/24 oran beluli fajlokkal csinal valamit.
Nekem megis hulyen reagal a rendszer:
find /share/tmp/ -mtime -1 -exec ls -al {} \;

kilistazta most (16:09,26-Mar-2010) a
Mar 24,Mar 25,Mar 26-ai fajlokat is.

find /share/tmp/ -mtime +1 -exec ls -al {} \;
csupan a Mar 24-ei fajlokat

Hogyan is mukodik tehat az -mtime opcio?

ardi

man find:

-atime n
File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.

-mtime n
File's data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file modification times.

Lezárnád az időzett szöveget [ / code ] paranccsal? Így elég nehezen olvashatóak a hozzászólások.

Ave, Saabi.

Emlekeim szerint a HP-UX find csak egesz napokat enged hasznalni, de a GNU find biztosan fordithato HP-UX alatt is, es akkor hasznalhatod azt, vagy pedig probalkozhatsz egy ilyesmi perl programot hivni a cronbol:


#! /usr/bin/env perl

use strict;
use warnings;
use File::Find;

my $t = time;
find(
  { wanted => sub {
      return if not -f;
      #print "$_\n" if $t - ( stat _ )[9] > 12 * 3600;
      #return;
      my $rv = unlink if $t - ( stat _ )[9] > 12 * 3600;
      warn "cannot delete file [$_]: $!" if not $rv;
    },
    no_chdir => 1,
    follow   => 0,
  },
  "/share/tmp"
);

Mindenkepp jatssz vele egy kicsit a csak printelo valtozatban, mielott hagyod hogy toroljon is, mert nem vallalok felelosseget, ha olyasmit is torol, amit nem kellett volna. ;-)

Avagy egy harmadik opcio, hogy valahol letrehozol egy ures file-t, touch-csal beallitod a modification time-ot 12 oraval korabbra, aztan

find ! -newer timestampfile ...

formaban torolsz.

Én azért csak megnézném azt a levelet a cron kimenetével. (Illetve a /var/adm/cron/log fájlt, hogy mi van a futtatásról). Ami leginkább gyanús, hogy pl. a hp-ux man-ban sehol nem szerepel az az egyszerű információ, hogy a cron pl. sh -c 'parancs' formátumban futtatja-e azt a szerencsétlen parancsot, vagy ő maga végez rajta némi feldolgozást (pl. ;-t és | -ot már láttam hapukszos crontab-fájlban), szóval egyáltalán nem vagyok biztos benne, hogy a parancslezáró ; elé a crontab-ban is kell-e a \ . Viszont a problémát megkerülendő, próbáld meg ezt a POSIX-szabványos megoldást:


..... -exec rm {} +

A -exec (vagy -ok) utáni + megegyezik a \; -gal, két különbség van: nem kell a shell elől takarni (speciel ez hibásan van a HP-UX manualban), és nem minden megtalált fájlnévvel fut le egyesével, hanem összegyűjt annyit amennyit tud, és azzal. A második fele nyilván sokat segít teljesítményben, az első pedig a fenti probléma kiküszöbölése kapcsán *lehet* érdekes.

Hello Zahy,

a /var/adm/cron/log file-ban a kovetkezo van:

CMD: /usr/bin/bdf >/share/tmp/bdf_before_removal.txt;
root 3154 c Mon Mar 29 00:25:00 GMT 2010
root 3154 c Mon Mar 29 00:25:00 GMT 2010
CMD: /usr/bin/find /share/tmp -mtime +1 -exec /usr/bin/rm {} \;
root 5124 c Mon Mar 29 00:30:00 GMT 2010
root 5124 c Mon Mar 29 00:30:01 GMT 2010
CMD: /usr/bin/bdf >/share/tmp/bdf_before_removal.txt;
root 13725 c Mon Mar 29 06:25:00 GMT 2010
root 13725 c Mon Mar 29 06:25:00 GMT 2010
CMD: /usr/bin/find /share/tmp -mtime +1 -exec /usr/bin/rm {} \;
root 15709 c Mon Mar 29 06:30:00 GMT 2010
root 15709 c Mon Mar 29 06:30:00 GMT 2010

Szoval nem latok itt semmi hibat.

Kiprobalom a ..... -exec rm {} +
beirast holnap reggel. (Koszi a tippet.)
ardi


# date
Mon Mar 29 12:50:56 METDST 2010
# ls -l
total 0
-rw-r--r--   1 root       sys              0 Mar 29 11:47 file1
-rw-r--r--   1 root       sys              0 Mar 29 11:47 file2
-rw-r--r--   1 root       sys              0 Mar 29 11:47 file3
-rw-r--r--   1 root       sys              0 Mar 29 11:47 file4
-rw-r--r--   1 root       sys              0 Mar 28 11:47 fileold1
-rw-r--r--   1 root       sys              0 Mar 28 11:47 fileold2
-rw-r--r--   1 root       sys              0 Mar 27 11:47 fileold3
-rw-r--r--   1 root       sys              0 Mar 27 11:47 fileold4
# find . -mtime 1 -exec /usr/bin/ls -l {} +
-rw-r--r--   1 root       sys              0 Mar 28 11:47 ./fileold1
-rw-r--r--   1 root       sys              0 Mar 28 11:47 ./fileold2
# find . -mtime +1 -exec /usr/bin/ls -l {} +
-rw-r--r--   1 root       sys              0 Mar 27 11:47 ./fileold3
-rw-r--r--   1 root       sys              0 Mar 27 11:47 ./fileold4
#

Vannak egy napnál _régebbi_ file-jaid? Mint láthatod, 29-én a "+1" nem listázza a 28-i file-okat, csak az "1"!

Ave, Saabi.

szia saabi,

szep es ertheto a kilistazasod, de nekem, sajna nem igy mukodik.

Vagy igen?

root@cgw:/share/mydepot#ls -al
total 1063328
drwxrwxrwx 2 root sys 8192 Mar 30 09:07 .
drwxr-xr-x 7 root root 96 Mar 24 11:45 ..
-rw-r----- 1 root sys 452679680 Mar 23 16:38 CGW-R5_1_0_1.depot
-rw-r----- 1 root sys 194560 Mar 23 16:37 IAP_91.depot
-rw-r----- 1 root sys 2263040 Mar 30 09:06 bison-2.4.1-hppa-11.11.depot
-rw-r----- 1 root sys 92160 Mar 29 15:59 depothelper-2.00-hppa-11.11.depot
-rw-r----- 1 root sys 2744320 Mar 30 08:42 findutils-4.4.2-hppa-11.11.depot
-rw-r----- 1 root sys 1290240 Mar 30 09:06 flex-2.5.35-hppa-11.11.depot
-rw-r----- 1 root sys 14407680 Mar 30 09:07 gettext-0.17-hppa-11.11.depot
-rw-rw-rw- 1 root sys 318 Mar 30 08:37 installed_packages.txt
-rw-r----- 1 root sys 66119680 Mar 23 16:38 jdk15_15004_pa.depot
-rw-r----- 1 root sys 2600960 Mar 30 08:49 libiconv-1.13.1-hppa-11.11.depot
-rw-r----- 1 root sys 1013760 Mar 30 09:06 m4-1.4.14-hppa-11.11.depot
-rw-r----- 1 root sys 962560 Mar 30 09:06 make-3.81-hppa-11.11.depot
root@cgw:/share/mydepot#find . -mtime 1 -exec /usr/bin/ls -l {} +
root@cgw:/share/mydepot#find . -mtime +1 -exec /usr/bin/ls -l {} +
./CGW-R5_1_0_1.depot ./IAP_91.depot ./jdk15_15004_pa.depot
root@cgw24:/share/mydepot#find . -mtime -1 -exec /usr/bin/ls -l {} +
./bison-2.4.1-hppa-11.11.depot ./flex-2.5.35-hppa-11.11.depot ./libiconv-1.13.1-hppa-11.11.depot
./depothelper-2.00-hppa-11.11.depot ./gettext-0.17-hppa-11.11.depot ./m4-1.4.14-hppa-11.11.depot
./findutils-4.4.2-hppa-11.11.depot ./installed_packages.txt ./make-3.81-hppa-11.11.depot
CGW-R5_1_0_1.depot findutils-4.4.2-hppa-11.11.depot jdk15_15004_pa.depot
IAP_91.depot flex-2.5.35-hppa-11.11.depot libiconv-1.13.1-hppa-11.11.depot
bison-2.4.1-hppa-11.11.depot gettext-0.17-hppa-11.11.depot m4-1.4.14-hppa-11.11.depot
depothelper-2.00-hppa-11.11.depot installed_packages.txt make-3.81-hppa-11.11.depot
root@cgw:/share/mydepot#

Akkor a depothelper-2.00-hppa-11.11.depot csak 15:59 utan jelenik meg ma a
find . -mtime 1 -exec /usr/bin/ls -l {} + parancsra?

Es miert nem mukodik a -l opcio as ls utan?

igy mukodik, de nem szabadna megjelenni a strong-gal jelolt fajloknak:

root@cgw:/share/mydepot#find . -mtime +1 -exec /usr/bin/ls -al {} \;
-rw-r----- 1 root sys 194560 Mar 23 16:37 ./IAP_91.depot
-rw-r----- 1 root sys 452679680 Mar 23 16:38 ./CGW-R5_1_0_1.depot
-rw-r----- 1 root sys 66119680 Mar 23 16:38 ./jdk15_15004_pa.depot
root@cgw:/share/mydepot##find . -mtime 1 -exec /usr/bin/ls -al {} \;
root@cgw:/share/mydepot#find . -mtime -1 -exec /usr/bin/ls -al {} \;
total 1063328
drwxrwxrwx 2 root sys 8192 Mar 30 09:07 .
drwxr-xr-x 7 root root 96 Mar 24 11:45 ..
-rw-r----- 1 root sys 452679680 Mar 23 16:38 CGW-R5_1_0_1.depot
-rw-r----- 1 root sys 194560 Mar 23 16:37 IAP_91.depot

-rw-r----- 1 root sys 2263040 Mar 30 09:06 bison-2.4.1-hppa-11.11.depot
-rw-r----- 1 root sys 92160 Mar 29 15:59 depothelper-2.00-hppa-11.11.depot
-rw-r----- 1 root sys 2744320 Mar 30 08:42 findutils-4.4.2-hppa-11.11.depot
-rw-r----- 1 root sys 1290240 Mar 30 09:06 flex-2.5.35-hppa-11.11.depot
-rw-r----- 1 root sys 14407680 Mar 30 09:07 gettext-0.17-hppa-11.11.depot
-rw-rw-rw- 1 root sys 318 Mar 30 08:37 installed_packages.txt
-rw-r----- 1 root sys 66119680 Mar 23 16:38 jdk15_15004_pa.depot
-rw-r----- 1 root sys 2600960 Mar 30 08:49 libiconv-1.13.1-hppa-11.11.depot
-rw-r----- 1 root sys 1013760 Mar 30 09:06 m4-1.4.14-hppa-11.11.depot
-rw-r----- 1 root sys 962560 Mar 30 09:06 make-3.81-hppa-11.11.depot
-rw-r----- 1 root sys 92160 Mar 29 15:59 ./depothelper-2.00-hppa-11.11.depot
-rw-rw-rw- 1 root sys 318 Mar 30 08:37 ./installed_packages.txt
-rw-r----- 1 root sys 2744320 Mar 30 08:42 ./findutils-4.4.2-hppa-11.11.depot
-rw-r----- 1 root sys 2600960 Mar 30 08:49 ./libiconv-1.13.1-hppa-11.11.depot
-rw-r----- 1 root sys 1290240 Mar 30 09:06 ./flex-2.5.35-hppa-11.11.depot
-rw-r----- 1 root sys 962560 Mar 30 09:06 ./make-3.81-hppa-11.11.depot
-rw-r----- 1 root sys 1013760 Mar 30 09:06 ./m4-1.4.14-hppa-11.11.depot
-rw-r----- 1 root sys 2263040 Mar 30 09:06 ./bison-2.4.1-hppa-11.11.depot
-rw-r----- 1 root sys 14407680 Mar 30 09:07 ./gettext-0.17-hppa-11.11.depot
root@cgw:/share/mydepot#

Es miert jelzi 2x a fajlokat?

ardi

Es miert jelzi 2x a fajlokat?

Mert a find megtalalja az aktualis konyvtarat (.) is, mint ami kevesebb mint egy napja valtozott (hiszen letrejottek uj file-ok stb.), es igy egy ilyesmi ls parancs fut:

ls . file1 file2 fileN

A nem megfelelo datumu file-ok az

ls .

kimenetehez tartoznak.
Ezt alapvetoen ket modon kerulheted meg. Vagy csak a file-okra findolsz:

$ find . -type f ...

vagy a konyvtarakat nem tartalmuk, hanem nevuk szerint listazod:

$ find ... -exec ls -dal {} +

Ha kesobb torolni akarod oket listazas helyett, akkor nyilvan a

-type f

valtozat a nyero.