Steve,
Thanks for your response.
On Tue, 2003-03-25 at 12:31, Steve Grazzini wrote:
> Kevin Old <[EMAIL PROTECTED]> wrote:
> >
> > Basically all I do is pipe the input from ps into my perl program, and
> > grep for cdlor.....but the path to perl has moved (long story) and the
> > cdlor isn't printed in the command output from ps.
>
> Can you explain?
>
> I can't see why changing the path to perl would break the "ps|grep"
> command...
Ok, I had perl installed under /home/motorola/local/bin/perl. Because
of other scripts running on this server that break when run under Perl
5.6.1, I installed that under /home/motorola/local/bin/perl5.6.1. When
I get the "command" back from ps it doesn't show the entire command.
For example I have a script running under cron....named cdlorcl.pl.
Before the command from ps would show as:
/home/motorola/local/bin/perl cdlor
now it shows as
/home/motorola/local/bin/perl5.6.1
Evidently there is a limit of the number of characters the cmd from ps
will show?
Any ideas?
>
> > #!/usr/bin/perl -w
> >
> > $regex =
> > '^\s{0,4}(\d{1,7})\s?(\d{2}:\d{2}:\d{2}|\s{0,3}\w{4}\d{2})\s{0,8}(\d{1,4}
> > -?)?(\d{2}):(\d{2}):(\d{2})';
>
> I prefer unpack() for this sort of thing -->
>
> #
> # this was for Solaris "top", but you get the idea
> #
> my @fields = qw(pid psid user thr pri nice size res state time cpu cmd);
> my @template = qw(A6 A6 A9 A4 A4 A4 A6 A6 A7 A7 A7 A*);
>
> my %ret;
> while (<TOP>) {
> next if 1..5;
>
> my %proc;
> s/^\s+//, s/\s+$//
> for @[EMAIL PROTECTED] = unpack "@template", $_;
>
> $ret{$proc{pid}} = \%proc;
> }
> wantarray ? %ret : \%ret;
> }
>
> > $pipe = open(PH, "ps -eo pid,stime,etime,comm \| grep cdlor |");
> ^
> No need to escape the pipe.
>
> [ snip parsing ]
>
> > foreach $p (@pids) {
> >
> > $count{$p}++;
> > print $p . "\n";
> >
> > next if $count{$p} >= 2;
> >
> > @sysargs = ("kill", $p);
> > system("kill $p") == 0 and print "$p killed\n";
> > # or die "system @sysargs failed $?";
>
> And here you could use the kill() function instead of system(). It's
> faster -- doesn't spawn a subprocess -- and lets you do a better job
> of error checking and reporting.
>
>
> > }
> >
>
> --
> Steve
--
Kevin Old <[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]