2015-12-31 2 views
1

Я написал скрипт на Perl:CronJobs и вывод на печать Perl

my $filename = '/root/report.txt'; 
open(my $fh, '>>', $filename) or die "Could not open file '$filename' $!"; 
print 'Hello world'; 
print $fh 'Hello world'; 
close $fh; 

Когда я запускаю этот скрипт с perl script.pl, он создает файл журнала $ имя файла и Привет, мир будет сохранен в файле журнала.

Но если я использую хрон

* * * * * perl script.pl 

он не работает и не сохраняет в report.txt.

Как решить эту проблему?

Я протестировал его, когда использовал этот скрипт с PP: Parcker, журнал не сохраняется.

+0

Возможный дубликат [Как сохранить вывод cron в файле в linux] (http://stackoverflow.com/questions/34520769/how-to-save-output-a-cron-in-a- file-in-linux) – ThisSuitIsBlackNot

+0

Несколько раз не спрашивайте [тот же вопрос] (http://stackoverflow.com/q/34520769e/176646). Если ответы на ваш исходный вопрос не являются удовлетворительными, оставьте комментарий или отредактируйте вопрос, а не попросите новый. Кроме того, вы не предоставили достаточно подробностей в любом вопросе; вы проверили журнал cron, чтобы убедиться, что ваш cronjob действительно работает? Журнал также сообщит о любых ошибках. – ThisSuitIsBlackNot

ответ

0

Во-первых, вы должны прочитать ваше письмо. Крон отправил вас.

Далее, поймите, что задания, запущенные cron, имеют, возможно, ваш домашний каталог как текущий рабочий каталог. Скорее всего, script.pl находится где-то в другом месте. Попробуйте использовать

* * * * * * /path/to/perl /path/to/script.pl 

Пожалуйста, проверьте дважды (читая man 5 crontab), если кронтаб принимает шесть звездочек. Моя реализация на FreeBSD принимает только 5.

+0

Я не могу использовать Perl перед path/to/script, потому что я использую Par: Parcker для шифрования моего скрипта. –

+0

@ YasinSanjari Один из нас сбит с толку. Если 'perl script.pl' работает, то работает'/path/to/perl/path/to/script.pl'. Просто используйте полные имена путей. – Jens

1

У меня была такая же проблема, когда я впервые начал использовать cron. Проблема в том, что cron работает в совершенно новой оболочке, поэтому все ваши переменные исчезли, включая путь.

Включает ли ваше задание cron FULL точный путь до perl и script.pl? Потому что ваш пример не имеет пути к script.pl. Поскольку переменная PATH не сохраняется при запуске задания cron. Задача cron, возможно, не выполнялась, но вызвала ошибку, отправленную на вашу учетную запись электронной почты на этом компьютере. Проверьте свою электронную почту. И в файле cron поместите MAIL=username, чтобы электронное письмо попало в вашу учетную запись на компьютере, где запущено задание cron. Если ваша машина поддерживает отправку электронной почты за пределами этой машины, работа выполняется, установите [email protected].

Чтобы установить путь, укажите в файле cron PATH=/whatever:/somewhere/else.

Также, вы редактируете свой личный файл crontab с помощью crontab -e? Это обычно рекомендуется. Не прикасайтесь к системе crontabs.

Другая переменная, которую вы можете установить, - SHELL=/bin/bash, чтобы использовать bash для всех заданий cron.

Кроме того, что Дженс сказал об использовании полного пути для Perl и вашего скрипта. У вас нет пути, когда задание cron выполняется, если вы не установите его в файле crontab, как в моем предложении выше.

# Suggested crontab file edited with crontab -e. 
# This is a crontab comment. 
MAIL=me 
PATH=/usr/bin:/root 
SHELL=/bin/bash 
* * * * * /usr/bin/perl/perl /export/home/me/script.pl 

Ключевые моменты:

  1. Крон бежит в его собственной оболочке, которые вы можете установить в использовании SHELL = переменной. У вас также не будет переменных, если вы их не установите.
  2. Используйте полный путь к perl и скрипту каждый раз.
  3. Cron отправляет вам электронное письмо, если выдается экранный вывод, либо через программу или сообщение об ошибке. Трудно отследить пустое электронное письмо электронной почты, где единственным выходом был возврат каретки.
  4. Редактируйте только файлы crontab, используя crontab -e на Ubuntu. Might будут отличаться от других систем.
+0

https://www.youtube.com/watch?v=b3_lVSrPB6w – Tanami

Смежные вопросы