Schrift
[thread]6286[/thread]

top, ps parsen? oder anders??: läuft ein perlprog schon? in LINUX

Leser: 1


<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten
mordur
 2004-05-24 14:44
#82657 #82657
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
moins,

ich habe ein Programm das soll auf der Konsole gestartet werden (Linux)
dann soll es ewig, sozusagen als Demon , laufen bis der Benutzer es ausdrücklich killt. ABER: dieses Prog darf nur einmal gestartet werden! d.h.
ich müsste gucken ob es schon läuft. ich könnte ja das prog eine Datei anlegen lassen und dann schauen im Prog ob es diese schon gibt und dann weiss ich ja das das prog schon läuft. ABER: wenn der anwender das prog killt müsste diese Datei gelöscht werden, weil ich das dem Anwender nicht überlassen kann . wie kann ich denn das anstellen? STRG + Z abfangen? wie? oder ist es besser top-ausgabe zu parsen oder gibts was viel besseres was ich nocht nicht weiss?
steinwolf
 2004-05-24 14:58
#82658 #82658
User since
2003-08-04
367 Artikel
BenutzerIn
[default_avatar]
Proc::Daemon ist ein Modul um dein Programm als Daemonprozess laufen zu lassen.
Ich würde STRG + Z nicht abfangen, ist zu unsicher. Ist bestimmt besser, wenn du in die Prozessliste schaust und dort nach dem bereits laufenden Programm ausschau hältst.

mfg stein
"Did you know? You can use your old motor oil to fertilize your lawn." - Blinkster - Professionelles EDV Forum
renee
 2004-05-24 15:02
#82659 #82659
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht könnte man da was mit Singleton basteln... Anstatt immer das selbe Objekt zu liefern halt eine Ausgabe machen und "sterben"...

http://c2.com/cgi/wiki?PerlSingleton
http://search.cpan.org/~abw/Class-Singleton-1.03/Singleton.pm\n\n

<!--EDIT|renee|1085396628-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Ishka
 2004-05-24 15:31
#82660 #82660
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Vielleicht nicht die sauberste Lösung, aber das erste, was mir einfällt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use strict;
use warnings;

if(`ps aux|grep identifizierungsstring_3r2argg4|grep -v grep`){
exit;
}else{
$0="identifizierungsstring_3r2argg4";
}
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
mordur
 2004-05-24 16:06
#82661 #82661
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
parse nun 'ps' läuft auch ganz gut. Die Module habe ich mir noch nicht angeschaut.
Kann sie unter Umständen auch nicht benutzen.
Wenn ich also mein Prog starte dann läuft es los, wenn es darf. Um nun wieder was auf der Konsole tippen zu können wenn ich das Prog gestartet habe, gebe ich STRG+ Z und danach 'bg' ein. Jetzt läuft mein Prog im Hintergrund und ich kann die Konsole weiter nutzen. Wie relisiere ich das im Prog? mit system? und wie soll man da STRG+Z vermitteln?
Ishka
 2004-05-24 16:38
#82662 #82662
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
entweder, du schickst dir selber irgendwelche Signale, oder du startest das Programm mit nachgestelltem &, oder du führst im Programm 'fork && exit;' aus. Wahrscheinlich gibts noch mehr Möglcihkeiten, aber ich kenn nur die drei.

ps:
fork && exit; ist die für Deamons empfohlene Variante\n\n

<!--EDIT|Ishka|1085402375-->
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
mordur
 2004-05-24 19:07
#82663 #82663
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
fork && exit läuft gut!
Danke! ;)
mordur
 2004-05-24 19:59
#82664 #82664
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
wo wir dabei sind:
ich starte mein prog und das hat dann beispielsweise die PID 6537 (print $$ ).
dann mache ich 'top' oder 'ps' und aufeinmal hat mein Prog eine ganz andere PID!
soll das so? kann man auch festlegen, das das Prog die PID behält die es beim Start bekommt?
Crian
 2004-05-24 23:21
#82665 #82665
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Hast Du die PID vor dem Fork ermitelt?\n\n

<!--EDIT|Crian|1085426550-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Ishka
 2004-05-25 02:05
#82666 #82666
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
durch fork && exit ändert sich die Pid - aber in $$ steht dann automatisch die neue drin.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
<< |< 1 2 3 >| >> 24 Einträge, 3 Seiten



View all threads created 2004-05-24 14:44.