Ich habe 24 Aufgaben (Unix-Befehle) in der Liste (Datei). Sie müssen zur gegebenen Zeit von 5 ausgeführt werden. Wenn eine Aufgabe abgeschlossen ist, sollte das Skript die nächste ausführen, bis alle 24 Aufgaben ausgeführt/konkurriert sind. Im Vordergrund habe ich eine while-Schleife mit "ps" -Befehl, um die Aktivität zu überwachen. Irgendwelche Ideen?perl: Ausführen von Unix-Prozessen und Überwachung von ihnen per Perl
-1
A
Antwort
3
use Parallel::ForkManager qw();
my $pm = Parallel::ForkManager->new(5);
for my $task (@tasks) {
$pm->start() and next;
my $exit_code = 0;
if (!eval {
...
return 1; # No exception
}) {
$exit_code = $! || $? >> 8 || 255;
warn([email protected]);
}
$pm->finish($exit_code);
}
$pm->wait_all_children();
0
Sie können Informationen aus Ihrer Prozessüberwachung erhalten mit Proc::ProcessTable
Dies ist ein Beispiel:
#!/usr/bin/perl
use Proc::ProcessTable;
$ref = new Proc::ProcessTable;
foreach $proc (@{$ref->table}) {
if(@ARGV) {
next unless grep {$_ == $proc->{pid}} @ARGV;
}
print "--------------------------------\n";
foreach $field ($ref->fields){
print $field, ": ", $proc->{$field}, "\n";
}
}
Wenn ich ist Windows mit, vielleicht können Sie Win32 :: Process verwenden * Module . Aber ich habe nie benutzt!
Verwandte Themen
- 1. Kontrolle von Google Chrome per Perl-Skript
- 2. Perl Ausführen von DBI Ausführen in Schleife
- 3. Facebook und Twitter Daten scrapping per Perl
- 4. Ausführen von Mount-System-Aufruf von Perl
- 5. Perl: Ausführen von gespeicherten Prozedur, die Select
- 6. Ausführen von SSH in SSH in perl
- 7. Perl-Skript direkt von GitHub ausführen
- 8. Verwenden von Perl Einzeiler in Perl-Skript
- 9. Senden von E-Mails per Perl mit sendmail
- 10. Lokale Bilddatei auf Tumblr per API per Perl
- 11. Ausführen von Java-Datei mit 2 Argumenten per Perl-Skript in Cygwin gestartet
- 12. Ausführen von SQL-Anweisung von Bash oder Perl Script?
- 13. SQL-Datei in Perl ausführen
- 14. C# Äquivalent von Perl $ _
- 15. Speichernutzung von Perl-Skript
- 16. Perl - Initialisierung von Hash
- 17. Von Perl zu Python
- 18. Finden und Zusammenführen von Intervallen in Perl
- 19. Begrenzender Effekt von Perl-Skript
- 20. qq Perl und unterstreichen
- 21. Perl vergleichen Elemente von Arrays und Gruppierung
- 22. Perl Art und Weise von parallel
- 23. Perl - Codierung von und zu base64
- 24. perl finden und ersetzen Löschen von Dateien
- 25. Integration von Perl und Oracle Advanced Queuing
- 26. Wie kann ich von Perl erzeugten Perl-Code verschönern?
- 27. Ausführen von Perl/CGI-Skript in AJAX ohne Server
- 28. Perl-Module spätere Versionen von Perl erfordert unter Windows verfügbar
- 29. Ausführen nur einer Perl-Skript-Instanz von Cron
- 30. Ausführen von Perl-Skripten aus einer Datei in Linux
Die Funktion, nach der Sie suchen, ist die Prozessdrosselung. Schau dir ein Modul an wie zB 'Parallel :: ForkManager' (http://metacpan.org/pod/Parallel::ForkManager) oder [Forks :: Super'] (http://metacpan.org/pod/Forks) ::Super). – mob
GNU Parallel ist ein Perl-Programm, das genau das tut, was Sie wollen. – amon