Ich versuche, "lvs" in einem Perl-Skript ausführen, um seine Ausgabe zu analysieren.Linux LVM lvs Befehl schlägt aus Cron Perl-Skript aber funktioniert von Cron direkt
my $output = `lvs --noheadings --separator : --units m --nosuffix 2>&1`;
my $result = $?;
if ($result != 0 || length($output) == 0) {
printf STDERR "Get list of LVs failed (exit result: %d): %s\n",
$result, $output;
exit(1);
}
printf "SUCCESS:\n%s\n", $output;
Wenn ich das obige Skript von einem Terminal-Fenster ausführen, läuft es gut. Wenn ich über cron es fehlschlägt:
Get list of LVs failed (exit result: -1):
Hinweis das Fehlen jeglicher Ausgabe (stdout + stderr)
Wenn ich das gleiche laufen „LVS --noheadings --separator: --units m - nosuffix "Befehl direkt in Cron, es läuft und gibt gut aus.
Wenn ich das Perl-Skript ändern, um Open3() zu verwenden, bekomme ich auch den gleichen Fehler ohne Ausgabe.
Wenn ich "-d -d -d -d -v -v -v" zu dem Befehl lvs hinzufügen, um ausführliche/Debug-Ausgabe zu aktivieren, sehe ich, dass wenn ich das Perl-Skript von Terminal ausführen, aber es gibt Keine Ausgabe bei Ausführung über Cron/Perl.
Ich laufe dies auf RHEL 7.2 mit/usr/bin/perl (5.16.3)
Irgendwelche Vorschläge ???
Ja, das Problem ist, dass innerhalb von Cron + Perl die $ PATH wurde nicht festgelegt, um/sbin enthalten wo "lvs" ist. Wenn Sie also "/ sbin/lvs" angeben, wird das Problem behoben. Vielen Dank!!! –