Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

линукс учебник

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: [Lug-bg] fuser + awk


  • Subject: Re: [Lug-bg] fuser + awk
  • From: Ted Zlatanov <tzz@xxxxxxxxxxxx>
  • Date: Tue, 15 Apr 2008 09:26:59 -0500
  • Organization: Теодор Златанов @ Cienfuegos

On Tue, 15 Apr 2008 10:28:53 +0300 "Dimitar Vasilev" <dimitar.vassilev@xxxxxxxxx> wrote: 

DV> На 15.04.08, Yordan Boikov <boikov@xxxxxxxxx> написа:
>> 
>> опс :)
>> трябва да е с == (два пъти равно) щото иначе е присвояване а не сравнение
>> :)
>> 
>> 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: ooooooooooooo
DV> b10SID_ora_PID.trc:
DV> b10SID_ora_PID.trc:
DV> b10SID_ora_PID.trc:
DV> b10SID_ora_PID.trc:
DV> 17793   18406    1399   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@xxxxxxxxxxxxxxxxxx
http://linux-bulgaria.org/mailman/listinfo/lug-bg


 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

Silaw.ORG
http://cilaw.org

 

 

© Copyright 2006 - 2008 Linux-Bulgaria.ORG

Hosted by "Internet Group" Ltd. - Stara Zagora