[Lug-bg] fuser + awk
Привет! Задачката е следната: трябва да зачистя неактивните trace файлове на една база. Проблемът е, че не мога да нацеля правилните опции на awk, за да хваща активните или неактивните в момента файлове. Пробвал съм с fuser *.trc | awk -F: '{$2 = ""; print $0 }' fuser *.trc | awk -F: -v $2=[:alphanum:] 'NF >2 {print $0 }' и пак ми изкарва всички файлове, без значение дали се ползват или не. Може ли подсказка как да изкарам било активните или неактивните- срещу бира и прочие. Благодаря предварително! ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
Dimitar Vasilev написа: > Привет! > Задачката е следната: > трябва да зачистя неактивните trace файлове на една база. > Проблемът е, че не мога да нацеля правилните опции на awk, > за да хваща активните или неактивните в момента файлове. > Пробвал съм с > fuser *.trc | awk -F: '{$2 = ""; print $0 }' > fuser *.trc | awk -F: -v $2=[:alphanum:] 'NF >2 {print $0 }' > и пак ми изкарва всички файлове, без значение дали се ползват или не. > Може ли подсказка как да изкарам било активните или неактивните- срещу > бира и прочие. > Благодаря предварително! > Какво точно искаш? ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
На 15.04.08, Васил Петров <[EMAIL PROTECTED]> написа: > > Dimitar Vasilev написа: > > > Привет! > > Задачката е следната: > > трябва да зачистя неактивните trace файлове на една база. > > Проблемът е, че не мога да нацеля правилните опции на awk, > > за да хваща активните или неактивните в момента файлове. > > Пробвал съм с > > fuser *.trc | awk -F: '{$2 = ""; print $0 }' > > fuser *.trc | awk -F: -v $2=[:alphanum:] 'NF >2 {print $0 }' > > и пак ми изкарва всички файлове, без значение дали се ползват или не. > > Може ли подсказка как да изкарам било активните или неактивните- срещу > > бира и прочие. > > Благодаря предварително! > > > > Какво точно искаш? Искам да затрия трейс файловете на eдин oracle, които не са заети в момента. fuser *.trc дава следното: ora_process_SID.trc: (свободен файл) ora_process_SID.trc:15000o (зает, отворен) При пайп на този стринг през awk не успявам да подам правилния стринг за да отделя тези които в момента са свободни или заети. Свободните са тези, които след двуеточието нямат цифра и буква - alphanumeric char. Ако не е възможно да отделя свободните - да открия само тези които имат. Т.е за които след разделителя второто поле е цифра и буква (PID+state). Нататък е ясно find \( ! -name busy.trc \) -exec rm {} \; или find -name free.trc -exec rm {} \; Благодаря ___ > Lug-bg mailing list > Lug-bg@linux-bulgaria.org > http://linux-bulgaria.org/mailman/listinfo/lug-bg > ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
fuser *.trc | awk -F: '{if ($2="") print $0}' не знам какво точно правиш, ни би следвало да имаш IF -- поздрави Y.Boikov :wq Quoting Dimitar Vasilev <[EMAIL PROTECTED]>: > Привет! > Задачката е следната: > трябва да зачистя неактивните trace файлове на една база. > Проблемът е, че не мога да нацеля правилните опции на awk, > за да хваща активните или неактивните в момента файлове. > Пробвал съм с > fuser *.trc | awk -F: '{$2 = ""; print $0 }' > fuser *.trc | awk -F: -v $2=[:alphanum:] 'NF >2 {print $0 }' > и пак ми изкарва всички файлове, без значение дали се ползват или не. > Може ли подсказка как да изкарам било активните или неактивните- срещу бира > и прочие. > Благодаря предварително! > ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
опс :) трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение :) awk -F: '{if ($2=="") print $0}' -- поздрави Y.Boikov :wq Quoting Dimitar Vasilev <[EMAIL PROTECTED]>: > Привет! > Задачката е следната: > трябва да зачистя неактивните trace файлове на една база. > Проблемът е, че не мога да нацеля правилните опции на awk, > за да хваща активните или неактивните в момента файлове. > Пробвал съм с > fuser *.trc | awk -F: '{$2 = ""; print $0 }' > fuser *.trc | awk -F: -v $2=[:alphanum:] 'NF >2 {print $0 }' > и пак ми изкарва всички файлове, без значение дали се ползват или не. > Може ли подсказка как да изкарам било активните или неактивните- срещу бира > и прочие. > Благодаря предварително! > ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
На 15.04.08, Yordan Boikov <[EMAIL PROTECTED]> написа: > > опс :) > трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение > :) > > > > awk -F: '{if ($2=="") print $0}' > > -- > поздрави > Y.Boikov > :wq не сработва добре: Дава ми: b10SID_ora_PID.trc: b10SID_ora_PID.trc: b10SID_ora_PID.trc: b10SID_ora_PID.trc: и в низа се пръква b10SID_ora_6762.trc: o b10SID_ora_PID.trc: b10SID_ora_PID.trc: b10SID_ora_PID.trc: b10SID_ora_PID.trc: 17793 184061399 18132 18108 18774 18763 18757 18767 18138 12169 668 29722 Идеи как да добавя и ofs да е null? ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
mi dai togava s grep fuser *.trc | grep ":$" tova shte ti izvede vsichki redove deto zavurshvat na : -- поздрави Y.Boikov :wq Quoting Dimitar Vasilev <[EMAIL PROTECTED]>: > На 15.04.08, Yordan Boikov <[EMAIL PROTECTED]> написа: >> >> опс :) >> трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение >> :) >> >> >> >> awk -F: '{if ($2=="") print $0}' >> >> -- >> поздрави >> Y.Boikov >> :wq > > > не сработва добре: > Дава ми: > b10SID_ora_PID.trc: > b10SID_ora_PID.trc: > b10SID_ora_PID.trc: > b10SID_ora_PID.trc: > и в низа се пръква > b10SID_ora_6762.trc: o > b10SID_ora_PID.trc: > b10SID_ora_PID.trc: > b10SID_ora_PID.trc: > b10SID_ora_PID.trc: > 17793 184061399 18132 18108 18774 18763 18757 18767 > 18138 12169 668 29722 > > Идеи как да добавя и ofs да е null? > ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
Здрасти, видях, че правиш проверка дали имаш втора колона, но предполагам дори в случя когато имаш свободен файл след двоеточието се "появява" интервал. Затова ти предлагам да правиш: - проверка дали броя на отделените колони е по-голям от 1 - проверка за дължината на втората колона awk -F: '{if ( ( NF > 1 ) && ( length($2)>1 ) ) print $0}' Поздрав, К. ГОЕВ > Оригинално писмо >От: "Dimitar Vasilev" >Относно: Re: [Lug-bg] fuser + awk >До: "Linux Users Group - Bulgaria" >Изпратено на: Вторник, 2008, Април 15 10:28:53 EEST >-- > >На 15.04.08, Yordan Boikov написа: >> >> опс :) >> трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение >> :) >> >> >> >> awk -F: '{if ($2=="") print $0}' >> >> -- >> поздрави >> Y.Boikov >> :wq > > >не сработва добре: >Дава ми: >b10SID_ora_PID.trc: >b10SID_ora_PID.trc: >b10SID_ora_PID.trc: >b10SID_ora_PID.trc: >и в низа се пръква >b10SID_ora_6762.trc: o >b10SID_ora_PID.trc: >b10SID_ora_PID.trc: >b10SID_ora_PID.trc: >b10SID_ora_PID.trc: >17793 184061399 18132 18108 18774 18763 18757 18767 >18138 12169 668 29722 > >Идеи как да добавя и ofs да е null? >___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
On Tue, Apr 15, 2008 at 11:09:13AM +0300, Frant Frant wrote: > Здрасти, > > видях, че правиш проверка дали имаш втора колона, но предполагам дори в случя > когато имаш свободен файл след двоеточието се "появява" интервал. Затова ти > предлагам да правиш: > - проверка дали броя на отделените колони е по-голям от 1 > - проверка за дължината на втората колона > > awk -F: '{if ( ( NF > 1 ) && ( length($2)>1 ) ) print $0}' А защо изобщо if е вътре в блока за всеки ред?! Формата на awk-кажгодетата си е 'условие { блок } условие { блок }', т.е. това би трябвало да може да бъде написано просто като: awk -F: 'NF > 1 && length($2) > 1 {print $0}' ...което дори може да бъде съкратено просто до: awk -F: 'NF > 1 && length($2) > 1' Не съм сигурен, че при всички реализации на awk е нужна проверката за брой полета, но това вече си зависи :) Поздрави, Петър -- Peter Pentchev [EMAIL PROTECTED][EMAIL PROTECTED][EMAIL PROTECTED] PGP key:http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 This sentence no verb. pgpqkF7y1hAPv.pgp Description: PGP signature ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg
Re: [Lug-bg] fuser + awk
On Tue, 15 Apr 2008 10:28:53 +0300 "Dimitar Vasilev" <[EMAIL PROTECTED]> wrote: DV> На 15.04.08, Yordan Boikov <[EMAIL PROTECTED]> написа: >> >> опс :) >> трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение >> :) >> >> awk -F: '{if ($2=="") print $0}' DV> не сработва добре: DV> Дава ми: DV> b10SID_ora_PID.trc: DV> b10SID_ora_PID.trc: DV> b10SID_ora_PID.trc: DV> b10SID_ora_PID.trc: DV> и в низа се пръква DV> b10SID_ora_6762.trc: o DV> b10SID_ora_PID.trc: DV> b10SID_ora_PID.trc: DV> b10SID_ora_PID.trc: DV> b10SID_ora_PID.trc: DV> 17793 184061399 18132 18108 18774 18763 18757 18767 DV> 18138 12169 668 29722 DV> Идеи как да добавя и ofs да е null? Забележи документацията: fuser outputs only the PIDs to stdout, everything else is sent to stderr. така че трябва да използваш |& (tcsh/zsh). Това е за да можеш да кажеш kill `fuser FILE` мисля, но е неудобно в твоят случай. Също ме учудва, че твоят fuser показва файлове който не се използват. Моят казва в опцийте: -a Show all files specified on the command line. By default, only files that are accessed by at least one process are shown. така че без -a би трябвало да покаже само използваните файлове, и `cut -d : -f 1' ще стигне. Аз бих използвал fuser индивидуално с всеки файл, защото връща 0 само ако файла е използван. Така че ще ти е проверка, без awk/grep/perl/cut/т.н. междинни процеси. Ще е по-бавно да го зареждаш всеки път ако имаш хиляди файлове, иначе е много по-точен метод (особено ако файла има : в името). perl -MFile::Find -e'open T, ">/tmp/files.txt"; find(sub { system(fuser => $_) || print T "$File::Find::name\n" }, @ARGV);' /usr/lib Това ще прати имената на използваните файлове в /tmp/files.txt. Дай му каквато директория искаш като параметър. Не ми се занимаваше да филтрирам fuser, което маже STDOUT и STDERR, в perl или awk или find, но може да се направи ако те дразни. Тео ___ Lug-bg mailing list Lug-bg@linux-bulgaria.org http://linux-bulgaria.org/mailman/listinfo/lug-bg