N
noob222
Mitglied
Hallo. Habe ein Script welches nicht von mir stammt. Es überprüft ob Prozesse die eigentlich beendet werden sollten (mit einem anderen Script) aber noch immer laufen. Falls die Prozesse noch immer laufen so sollen sie mit diesem Script nachträglich beendet werden. Das Problem ist, das es manchmal funktioniert und manchmal nicht. Also das Script ist schon funktionsfähig aber er will irgendwie manchmal die Prozesse nicht auf Anhieb beenden.
Meine Aufgabe ist nun eine Zählschleife in dieses Script einzubauen, welches 3 mal die Schleifen durchlaufen soll und gegebenfalls die Prozesse beim 2 oder 3. Anlauf beenden soll, die er beim 1. Durchlauf nicht beenden konnte. Zudem möchte ich die Ausgaben (print-Ausgaben) in eine seperate Datei schreiben, damit ich überprüfen kann ob die Prozesse auch beendet wurden und bei welchem Durchlauf dies passiert ist.
Da ich nich so viel Ahnung von Perl habe, aber die Syntax mir von Java/Shell-Scripten bekannt vor kommt, habe ich jetzt folgendes gemacht.
Das habe ich ausgeführt und es hat geklappt. Zumindest wenn ich bei der for-schleife kein mißt gebaut habe :-)
Also die for-Schleife sollte doch korrekt sein oder?
mfg
Meine Aufgabe ist nun eine Zählschleife in dieses Script einzubauen, welches 3 mal die Schleifen durchlaufen soll und gegebenfalls die Prozesse beim 2 oder 3. Anlauf beenden soll, die er beim 1. Durchlauf nicht beenden konnte. Zudem möchte ich die Ausgaben (print-Ausgaben) in eine seperate Datei schreiben, damit ich überprüfen kann ob die Prozesse auch beendet wurden und bei welchem Durchlauf dies passiert ist.
Da ich nich so viel Ahnung von Perl habe, aber die Syntax mir von Java/Shell-Scripten bekannt vor kommt, habe ich jetzt folgendes gemacht.
Code:
#!/usr/bin/perl
#
# Globale Variablen
#
my $prozess1 = undef; # 1. Prozess
my $prozess2 = undef; # 2. Prozess
my $prozess3 = undef; # 3.Prozess
my $zaehler = 0; # Zähler fängt bei 0 an
my $max_durchlauf = 3; # Max. 3 Durchläufe
$file = ' /user/home/hierIstMeinPerlScript/test.txt'
open(TEST, $file);
@lines = <TEST>;
close(TEST);
print @lines;
eval {
for($zahler=0; $zahler<$max_durchlauf; $zaehler++){
beende_prozesse() if prozesse_vorhanden();
if ( prozesse_vorhanden() ) {
open(TEST, ">$file");
print TEST "Das ist der $zahler . Durchlauf\n";
close(TEST);
#die "Es sind nach wie vor Prozesse am laufen\n";
beende_prozesse();
} else {
open(TEST, ">$file");
print TEST "Keine Prozesse am laufen\n";
close(TEST);
}
}
};
if ($@) {
&print_errors( $@ );
}
#
# Bis hierhin war das der Main-Programm
#
exit 0;
Das habe ich ausgeführt und es hat geklappt. Zumindest wenn ich bei der for-schleife kein mißt gebaut habe :-)
Also die for-Schleife sollte doch korrekt sein oder?
mfg
Zuletzt bearbeitet: