Portál AbcLinuxu, 12. května 2025 06:31

Dotaz: Perl - kontrola běžícího procesu

24.8.2011 14:02 Martin
Perl - kontrola běžícího procesu
Přečteno: 314×
Odpovědět | Admin
Lze udělat toto nějak jednoduše v Perlu?

#proces jeste bezi

while [ -n "`pidof RS2.sh`" ]; do

a=1

done

Strýček Google mě moc nepomohl.

Díky

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.8.2011 14:53 ph0enix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: Perl - kontrola běžícího procesu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napriklad temer stejne jako jsi to napsal v shellu. Nevim sice co presne pidof vraci, ale predpokladam ze pouze cislo. Pokud ano, je vraceny PID v promenne $1 (pro pripad, ze by byl potreba)
while (`pidof RS2.sh` =~ /^(\d+)/) {
     # delej dal co je potreba, nebo jen cekej...
     sleep 1
 }
25.8.2011 20:33 Xerces
Rozbalit Rozbalit vše Re: Perl - kontrola běžícího procesu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebylo by lepší si tím .sh skriptem vytvořit nějaký soubor a před ukončením .sh skriptu ten soubor smazat a v té smyččce testovat existenci toho souboru? Obdobně jako run soubory u daemonů?
27.8.2011 21:37 Martin
Rozbalit Rozbalit vše Re: Perl - kontrola běžícího procesu
Tak jsem to nakonec udělal takhle. Sice to je asi prasárna ale funguje to.

V bashi uložím PID:

echo $$ > /home/tmp/RS.pid

V perlu testuji:

while (kill 0, `head -1 /home/tmp/RS.pid` =~ /^(\d+)/) { print "Proces bezi.\n"; sleep 1 }

print "Proces nebezi.\n";
Řešení 1× (saf)
27.8.2011 22:02 Martin
Rozbalit Rozbalit vše Re: Perl - kontrola běžícího procesu
Takhle je to asi lepší.

$pid = `head -1 /home/tmp/RS.pid`;

# while (kill 0, $pid =~ /^(\d+)/) { print "Proces bezi.\n"; sleep 1; } print "Proces nebezi.\n";

25.8.2011 21:05 Kit
Rozbalit Rozbalit vše Re: Perl - kontrola běžícího procesu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nedávno jsem hledal něco podobného pro shell a našel jsem příkaz wait. Takovým nekonečným cyklům se vyhýbám velkým obloukem, protože nic nedělají a jen zbytečně zatěžují procesor.
26.8.2011 09:35 l4m4
Rozbalit Rozbalit vše Re: Perl - kontrola běžícího procesu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Běžný postup sledování nepotomka je 1. zjistit pid (jednou na začátku) 2. kill(pid, 0) a zkontrolovat návratovou hodnotu. Pokud OK, tak proces běží. Race conditions je to celé prolezlé, ale to je i tvůj původní postup, takže to asi nevadí.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.