Cat_CooLeR
@Cat_CooLeR

Perl+Cron — почему не сохраняется файл?

Всем привет!
Имеется скрипт на Perl с таким вот куском:
$msg .= "path: $fname \n";
				unlink($fname);
				unless (-d $_[2]) {mkdir 'in/'.$_[2], 0755;}
				open(OUT,"> $fname") or $msg .= "$fname not save! \n";
				local $/ = undef;
				print OUT $content,"\n";
				close(OUT);

$fname - путь к файлу, $msg - сообщение, которое потом кладется в базу
И этот скрипт запускается cron каждые 20 минут, вот из файла /etc/crontab:
*/20 * * * * root /usr/bin/perl *путь к файлу*

Когда скрипт запускается вручную из рутовой консоли - файл перезаписывается, когда запускается cron выводит: " *имя файла* not save " и не перезаписывает файл. Что можно сделать?
  • Вопрос задан
  • 2858 просмотров
Решения вопроса 1
@pcdesign
Вот несколько вариантов как можно это победить:

1) Можно вот эти строки добавить в скрипт, где-нибудь сверху.

BEGIN {
    use Cwd 'chdir';    # Запуск скрипта из крона
    use File::Basename;
    chdir dirname $0;    # Меняем путь
}


2) Либо сделать сначала в кроне:
cd *путь к директории где лежит файл*;  /usr/bin/perl *путь к файлу*


3) В вашем скрипте указать полный путь к файлу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы