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
jedoch habe ich es nicht geschaft, das die "print" Ausgaben in mein "test.txt"-Datei geschrieben werden. Damti wollte ich halt überprüfen wie viele Druchläufe das Script braucht um die Prozesse wirklich beenden zu können.
Habe ich da bei dem "close" und "open" falsch gemacht?
Also die for-Schleife soltle doch korrekt sein oder? Das mit dem open und clos Befehl habe ich mir duchgelesen und so übernommen. Die test.txt-Datei habe ich neu angelegt und dort steht nichts drin. Wenn ich mein Script ausführe steht da noch immer nichts drin. Das soll ich halt ändern. Da sollte (wäre gut für mich) wenn es geht folgendes drin stehen:
Für eine kurze Hilfestellung wäre ich sehr dankbar.
mfg[/code]
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 "Zaehler ist beim $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
Habe ich da bei dem "close" und "open" falsch gemacht?
Also die for-Schleife soltle doch korrekt sein oder? Das mit dem open und clos Befehl habe ich mir duchgelesen und so übernommen. Die test.txt-Datei habe ich neu angelegt und dort steht nichts drin. Wenn ich mein Script ausführe steht da noch immer nichts drin. Das soll ich halt ändern. Da sollte (wäre gut für mich) wenn es geht folgendes drin stehen:
Code:
print TEST "Zaehler ist beim $zahler . Durchlauf\n";
Für eine kurze Hilfestellung wäre ich sehr dankbar.
mfg[/code]