Я пытаюсь запустить «lvs» в perl-скрипте для анализа его вывода.Linux LVM команда lvs не работает из cron perl script, но работает с cron напрямую
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;
Когда я запускаю вышеуказанный скрипт из окон терминала, он работает нормально. Если я бегу через хрон он терпит неудачу:
Get list of LVs failed (exit result: -1):
Обратите внимание на отсутствие какого-либо вывода (STDOUT + STDERR)
Если я запускаю тот же «LVS --noheadings --separator: --units м - nosuffix "непосредственно в cron, он работает и выводится просто отлично.
Если я изменяю скрипт perl для использования open3(), я также получаю тот же самый отказ без вывода.
Если я добавлю «-d -d -d -d -d -v -v -v» в команду lvs, чтобы включить вывод verbose/debug, я вижу, что при запуске скрипта perl из терминала, но есть нет выхода при запуске через cron/perl.
Я бегу это на RHEL 7.2 с/USR/бен/Perl (5.16.3)
Любые предложения ???
Да, проблема в том, что внутри cron + perl $ PATH не был установлен для включения/sbin, где находится «lvs». Таким образом, определение «/ sbin/lvs» устраняет проблему. Спасибо!!! –