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
- 5179 megtekintés
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 hozzászóláshoz be kell jelentkezni
Csak kilistazni akartam, de az sem mukodott:
#/usr/bin/find /share/tmp -cmin +960 -exec ls -al {} \;
find: bad option -cmin
ardi
PS: neztem a man find-ot, de nincs benne -cmin opcio ..:-((
- A hozzászóláshoz be kell jelentkezni
Nálam működik a parancsod.
Amúgy én csak így használom: find /tmp -cmin -150
Milyen Linux?
- A hozzászóláshoz be kell jelentkezni
Ahogy felul latod, HP-UX rendszerrol van szo!!!
ardi
- A hozzászóláshoz be kell jelentkezni
Ok, bocs.
-
- A hozzászóláshoz be kell jelentkezni
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 '{}'
- A hozzászóláshoz be kell jelentkezni
szerintem a ' jelek feleslegesek...
ardi
- A hozzászóláshoz be kell jelentkezni
Így van, csak a ;-t kell védeni. Megnézem a find-ot a jövő héten.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
csaba@karmic:~$ which rm
/bin/rm
Persze lehet, hogy HP-UX alatt nem ott van.
- A hozzászóláshoz be kell jelentkezni
Ha nem találná az rm-et, akkor lenne a parancsnak outputja, melyet a cron elküldene e-mailben. Itt inkább a find paraméterezésével lesz probléma.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Debian alatt így használom:
find /mnt/acgftp/public/* -type f ! -name .ftpquota ! -name .netorold -mtime +7 -exec rm {} \;
- A hozzászóláshoz be kell jelentkezni
Ez a gnu find, itt meg a hápuxosról van szó...
- A hozzászóláshoz be kell jelentkezni
Bocs, nem tudtam, hogy különbözik.
- A hozzászóláshoz be kell jelentkezni
Lezárnád az időzett szöveget [ / code ] paranccsal? Így elég nehezen olvashatóak a hozzászólások.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
...
én egyszer megboldogítottam egy oldalt - az rosszabb volt :-)
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
É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.
- A hozzászóláshoz be kell jelentkezni
Ezt bírom benned, hogy mindig lehet tanulni valami újat. Erről a +-ról még sose hallottam!
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
# 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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
koszi rubasov a hozzaszolast.
pont ilyen megoldast javasoltak mashol is:
30 6 * * * /usr/bin/find /share/tmp -only -type f -mtime +0 -exec /usr/bin/rm {} \;
remelem, ez is mukodni fog.
ardi
- A hozzászóláshoz be kell jelentkezni
Sztem nincs -only opcio hapukszban. Sot leginkabb sehol szabvanyosan.
- A hozzászóláshoz be kell jelentkezni
hmm, nekem pedig torli rendesen a cuccokat.
ardi
- A hozzászóláshoz be kell jelentkezni