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

 

начало

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

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

семинари ...

документи

как да ...

 

 

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

Re: lug-bg: Елементарен въпрос за awk


  • Subject: Re: lug-bg: Елементарен въпрос за awk
  • From: Peter Pentchev <roam@xxxxxxxxxxx>
  • Date: Mon, 19 Jul 2004 10:39:49 +0300

On Mon, Jul 19, 2004 at 10:36:39AM +0300, Peter Pentchev wrote:
> On Mon, Jul 19, 2004 at 08:31:29AM +0200, Nickolay Kolev wrote:
> > Здравейте,
> > 
> > Написах си следното нещо, с което да мога да търся процеси:
> > 
> > #!/bin/sh
> > 
> > ps aux | grep -i $1 | grep -v grep | grep -v psf | awk '{FS="\t"; print 
> > $1 "\t" $2 "\t" $11}'
> > 
> > какво прави скриптът е очевидно - показва списъка на процесите с тази 
> > разлика, зе се появяват само ПИД, потребител и самата команда, 
> > стартирала процеса. Лошото е, че много често тази въпросна команда 
> > съдържа в себе си и интервали. Например ако съм стратирел нещо със sudo 
> > отпред, то това горното ще ми покаже само sudo, но не и командата 
> > по-нанатък. Мислех си, че трябва да сложа \t като разделител на awk (в 
> > първия опит просто го бях оставил на разделитяля по подразбиране), но 
> > пак не става, резултатът е същият.
> > 
> > Та как да кажа на авк да ми даде цялата команда? Демек, а оттук нататък 
> > ми дай всичко останало...
> 
> Мисля, че и с awk можеше да се направи, само че в момента не мога да се
> сетя точно как :(  Но можеш да се справиш малко по-добре с Perl, като го
> направиш 1. с една команда (а не с три grep-а), 2. без да показва самия
> процес, който търси това, което търсиш:
> 
> ps awwwfux | perl -ne 'next unless /rspawn/; split /\s+/; next if $_[0] == $$; print join(" ", @_[10..$#_])."\n"'
> 
> Или, ако го искаш в малко по-чист вид, като отделно скриптче без
> hardcode-нат /rspawn/, погледни прикаченото pidof-pl :)

Е, разбира се, щеше да е малко по-хитро да го бях и прикачил наистина :)

Поздрави,
Петър

-- 
Peter Pentchev	roam@xxxxxxxxxxx    roam@xxxxxxxx    roam@xxxxxxxxxxx
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
You have, of course, just begun reading the sentence that you have just finished reading.
#!/usr/bin/perl

my $cmd = shift;
if (!defined($pid = open(PIPE, "-|"))) {
	die("pipe: $!\n");
} elsif ($pid == 0) {
	exec("ps awwwfux");
	die("executing ps: $!\n");
}
while (<PIPE>) {
	next unless /$cmd/;
	split /\s+/;
	next if $_[1] == $$;
	print join("\t", $_[0], $_[1], join(" ", @_[10..$#_]))."\n"
}

Attachment: pgpzR_qMSyQm_.pgp
Description: PGP signature



 

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

 

линукс за българи
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

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.