/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Undersøge om program afvikles
Fra : Jimmy


Dato : 17-06-03 18:32

Hej

Jeg forsøger at finde ud af om et givent program afvikles.
Se linie fra ps aux:

root 27937 0.2 0.3 2632 1220 pts/1 S 19:22 0:00
/usr/bin/gsmsmsd -d /dev/ttyS0 -b 9600 --spool
/gsm/sms/sms_out_01 -f --store SM --action perl
/gsm/scripts/perl/sms_incoming.pl 1

Jeg har følgende to problemer, som jeg håber I kan hjælpe med:

1) Mit regulære udtryk fejler, idet det aldrig finder "gsmsmsd" selvom det
godt kan finde "crond"

2) Når qx afvikles tager den ikke hensyns til & og giver således ikke
kommandoen tilbage til brugeren

Se program nedenfor.

Mvh
Jimmy


#!/usr/bin/perl -w

use strict;


# Check ps aux
open (PSAUX, "ps aux |") or die "cannot open ps aux \n";

while (<PSAUX>)
{
my $line = $_;
if ($line =~ /.*gsmsmsd.*/)
{
print "Program started \n";
exit;
}
}

close (PSAUX);


# Naar vi ikke har exit'ed ud af scriptet maa det betyde, at programmet IKKE
er startet
qx ( "/usr/bin/gsmsmsd" -d /dev/ttyS0 -b 9600 --spool
/gsm/sms/sms_out_01 -f --store SM \--action 'perl
/gsm/scripts/perl/sms_incoming.pl 1' & );



 
 
Lars Balker Rasmusse~ (17-06-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 17-06-03 20:32

"Jimmy" <nyhedsgruppe@get2net.dk> writes:
> Jeg forsøger at finde ud af om et givent program afvikles.
> Se linie fra ps aux:

OS? Prøv med "ps auxww" i stedet.

> while (<PSAUX>)
> {
> my $line = $_;
> if ($line =~ /.*gsmsmsd.*/)

Lad være med at bruge .*, hvis du ikke skal bruge resulatatet til noget.

/gsmsmsd/ er nok.

> # Naar vi ikke har exit'ed ud af scriptet maa det betyde, at programmet IKKE
> er startet
> qx ( "/usr/bin/gsmsmsd" -d /dev/ttyS0 -b 9600 --spool
> /gsm/sms/sms_out_01 -f --store SM \--action 'perl
> /gsm/scripts/perl/sms_incoming.pl 1' & );

Lad være med at bruge `` (det samme som qx), hvis du ikke skal bruge
resultatet til noget. Brug system.

Problemet er at du bruger den form af system-kald som ikke spawner en
shell, og det er shellen der forstår &.

Prøv med system q{/usr/bin/gsmsmsd -d osv &};
--
Lars Balker Rasmussen Consult::Perl

Jimmy (17-06-2003)
Kommentar
Fra : Jimmy


Dato : 17-06-03 20:40


"Lars Balker Rasmussen" <lars@balker.org> wrote in message
news:0f8ys0jy9t.fsf@laphroaig.balker.org...
> "Jimmy" <nyhedsgruppe@get2net.dk> writes:
> > Jeg forsøger at finde ud af om et givent program afvikles.
> > Se linie fra ps aux:
>
> > while (<PSAUX>)
> > {
> > my $line = $_;
> > if ($line =~ /.*gsmsmsd.*/)
>
> Lad være med at bruge .*, hvis du ikke skal bruge resulatatet til noget.
>
> /gsmsmsd/ er nok.

Sørme ja.
Super.


> > # Naar vi ikke har exit'ed ud af scriptet maa det betyde, at programmet
IKKE
> > er startet
> > qx ( "/usr/bin/gsmsmsd" -d /dev/ttyS0 -b 9600 --spool
> > /gsm/sms/sms_out_01 -f --store SM \--action 'perl
> > /gsm/scripts/perl/sms_incoming.pl 1' & );
>
> Lad være med at bruge `` (det samme som qx), hvis du ikke skal bruge
> resultatet til noget. Brug system.
>
> Problemet er at du bruger den form af system-kald som ikke spawner en
> shell, og det er shellen der forstår &.
>
> Prøv med system q{/usr/bin/gsmsmsd -d osv &};

Jamen det virkede ved første forsøg med dine rettelser.

Tak for det hurtige svar!

Mvh
Jimmy



Morten Guldager (18-06-2003)
Kommentar
Fra : Morten Guldager


Dato : 18-06-03 13:39

Tue, 17 Jun 2003 at 19:32 GMT Lars Balker Rasmussen wrote
>
> Lad være med at bruge `` (det samme som qx), hvis du ikke skal bruge
> resultatet til noget. Brug system.
>
> Problemet er at du bruger den form af system-kald som ikke spawner en
> shell, og det er shellen der forstår &.
>
> Prøv med system q{/usr/bin/gsmsmsd -d osv &};

Jeg ville nok prøve noget med en fork og en exec for at undgå at bash
(eller anden shell) bliver hængende. Ligeledes må det også være lidt
mere effektivt.


unless (fork)
{
exec '/usr/bin/gsmsmsd', '-d', 'osv';
}

Så slipper du også for at din shell skal spilde CPU-cycles på at fortolke
parametre.


/Morten

Søg
Reklame
Statistik
Spørgsmål : 177428
Tips : 31962
Nyheder : 719565
Indlæg : 6407936
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste