[Lug-bg] fuser + awk

2008-04-14 Thread 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

2008-04-14 Thread Васил Петров
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

2008-04-14 Thread Dimitar Vasilev
На 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

2008-04-14 Thread Yordan Boikov
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

2008-04-14 Thread Yordan Boikov
опс :)
трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение :)


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

2008-04-15 Thread Dimitar Vasilev
На 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

2008-04-15 Thread Yordan Boikov
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

2008-04-15 Thread Frant Frant
Здрасти,

видях, че правиш проверка дали имаш втора колона, но предполагам дори в случя 
когато имаш свободен файл след двоеточието се "появява" интервал. Затова ти 
предлагам да правиш:
- проверка дали броя на отделените колони е по-голям от 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

2008-04-15 Thread Peter Pentchev
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

2008-04-15 Thread Ted Zlatanov
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