Çıktısını ayrıştırmak için perl betiğinde "lvs" çalıştırmaya çalışıyorum.Linux LVM lvs komutu, cron perl betiğinden başarısız oluyor ancak cron'dan doğrudan çalışıyor
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;
Yukarıdaki betiği bir terminal penceresinden çalıştırdığımda düzgün çalışıyor. Cron ile çalıştırmak başarısız:
Get list of LVs failed (exit result: -1):
Not bir çıkış eksikliği (stdout'u + stderr'yi)
aynı çalıştırmak "lvs --separator --noheadings: m --units - nosuffix "doğrudan cron komutu, çalışır ve çıktılar iyi.
Eğer open3() kullanmak için perl betiğini değiştirirsem, aynı hatadan da çıktı alırım.
"-d -d -d -d -d -v -v -v" lb komutunu verbose/debug çıktısını etkinleştirmek için eklerseniz, perl betiğini terminalden çalıştırdığımda görüyorum ancak cron/perl ile çalıştırıldığında çıkış yok.
Ben RHEL 7.2 bu çalıştırıyorum/usr/bin/perl (5.16.3)
herhangi bir öneriniz ile ???
Evet, problem şu ki, cron + içinde $ PATH, "lvs" olduğu yerde/sbin içerecek şekilde ayarlanmamıştır. Yani "/ sbin/lvs" ifadesini belirterek sorunu giderir. Teşekkür ederim!!! –