LINUX.ORG.RU
ФорумAdmin

Как отладить perl скрипт, запускаемый по cron-у?


0

1

Скрипт, запускаемый вручную, отрабатывает ОК, а по cron-у виснет и приходится убивать этот perl-овый процесс. UID и там и там - root. Все внешние команды - с абсолютными путями. Делал вывод в файл через &> - не помогает.

а на чём виснет-то?
или начни хотябы с описания того, что делает твой скрипт )

aol ★★★★★
()

* * * * * и tail -f /var/log/syslog

Вообще, скрипт сам должен думать над ошибками и заниматься логированием.

helios ★★★★★
()
Ответ на: комментарий от aol

Скрипт последовательно лазит по трем папкам, смотрит не превысил ли их объем определенный лимит, и если да, то стирает по одному самые старые файлы пока объем не вернется в нужные границы. По каждой папке печатает кол-во стертых файлов.

На чем виснет не видно, т.к. в файл ничего не пишет!

constrn
() автор топика
Ответ на: #!/usr/bin/perl -W от braindef

Ясное дело, только w маленькое :-)

constrn
() автор топика
Ответ на: комментарий от constrn

а совместный доступ к файлам как обрабатывается? может, кто пишет в него еще, а ты уже удалять собрался

aol ★★★★★
()

выложи скрипт, глянем.

dada ★★★★★
()

А если strace-ом посмотреть, что он там делает ?

AS ★★★★★
()
Ответ на: комментарий от constrn

От имени кого запускается по крону? Почему для файлов результата («/usr/bin/du /u1/mymot/rtez_$arg > f1.txt») абсолютные пути не указаны?

om-nom-nimouse ★★
()
Ответ на: комментарий от r2d2
while [ `du -s . | awk '{print $1}'` -gt 1000 ]; do rm -f `ls -1t | tail -1`; done
r2d2
()

в environment смотрел ?

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

ls /tmp || echo «ne srabotaet ls»

# а вот так :

/bin/ls /tmp || echo «tak srabotaet»

или подгружать их через wrapper , shell script. криво , даже показывать не буду ...

И самое элегантное, на мой взгляд решение , запускать скрипт от пользователя которым хотелось бы что бы бежал скрипт с опцией -l

su -l USERNAME /usr/local/bin/your_perl_script.pl тогда cron сначала загружает то же самое окружение что и при логине , и бежит себе без проблем .

evgenyra
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.