Обычно cron отправляет вам почту с выводом вашей программы. Когда вы понимаете это, вы, вероятно, хотите проверить окружающую среду. Это не обязательно будет та же среда, что и ваша оболочка для входа (поскольку это не оболочка для входа):
foreach my $key ( keys %ENV ) {
printf "$key: $$ENV{$key}\n";
}
Если вы упускаете что-то, что вам нужно, установите это в вашем файле:
SOME_VAR=some_value
HOME=/Users/Buster
Если вам нужно начать с определенного каталога, вы должны chdir там. Начальный каталог из задания cron, вероятно, не такой, как вы думаете. Без аргумента chdir переходит в ваш домашний каталог. Однако иногда эти переменные окружения могут быть не установлены в вашем сеансе cron, поэтому, вероятно, лучше иметь значение по умолчанию:
chdir( $ENV{HOME} || '/Users/Buster' );
В различных критических точках вы должны выдавать ошибку. Это хорошо даже в не-1016 * cron программах:
open my $fh, '<', $some_file or die "Didn't find the file I was expecting: $!";
Если вы перенаправите вещи на / dev / null , вы потеряете всю информацию, которая может помочь вам решить проблему.