LINUX.ORG.RU

глюки cron и screen

 cron screen


0

1

Здравствуйте. Столкнулся с ситуацией, когда скрипт в screen выводит другие результаты, в отличие от ручного запуска. Хотел распарсить сайт, да не выходит, вот пример:

kol@servak:~$ cat /tmp/tracker_page.html 
	<td class="row1"><a class="gen f" href="tracker.php?f=2093">������ 2011-2012</a></td>
kol@servak:~$

это часть страницы в cp1251, кракозябры - слово «Фильмы»

скрипт:

kol@servak:~$ cat /etc/cron.d/test.sh 
#!/bin/bash

cat /tmp/tracker_page.html | xargs | iconv -t utf8 -f cp1251 | egrep -i 'фильмы' 
echo "111";
kol@servak:~$

при запуске из консоли скрипт выводит содержимое файла, однако(!):
08 13 * * * screen -m -d -L -U /etc/cron.d/test.sh
хотя я и включил поддержку utf8(-U), такая запись в кроне ничего не выводит в лог файл(-L)!

root@servak:/tmp# cat /root/screenlog.0 
11
root@servak:/tmp#
маленькая деталь: в скрипте 3 единицы, а в логе 2 (sic!)

Подскажите, как быть?

Крон тут ни при чём. Подтверждаю, воспроизводится при запуске через screen с указанными параметрами.

anonymous
()

как быть?

Не использовать screen для вывода. Перенаправлять вывод куда нужно в кронтабе или в самом скрипте.

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

я тут подумал, может дело не в screen, и сделал обычное перенаправление вывода.

4 19 * * * /etc/cron.d/test.sh > /home/kol/rtorr.log
и ситуация повторилась:
kol@servak:~$ cat /etc/cron.d/test.sh 
#!/bin/bash

eee="`cat /tmp/tracker_page.html | xargs | iconv -t utf8 -f cp1251 | egrep -i 'фильмы'`"
echo $eee
echo "111";
kol@servak:~$ 
kol@servak:~$ cat rtorr.log 

111
kol@servak:~$
теперь хотябы единицы три, получается screen отпадает!?

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

screen у меня получается ответственным как раз за потерю единицы. Предыдущий текст он не теряет. Тогда, получается, крон?

А если в самом скрипте перенаправить первый echo?

anonymous
()
Ответ на: комментарий от kuzyara

Какой конкретно крон-то стоит? vixie-cron, dcron, fcron?

anonymous
()

cat /tmp/tracker_page.html | xargs | iconv -t utf8 -f cp1251 | egrep -i 'фильмы'

Что?? Как оно вообще работает?

Почему нельзя сделать по-нормальному:

iconv -f cp1251 /tmp/tracker_page.html | egrep -i 'фильмы' 

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

Да и egrep тут не нужен. Достаточно grep.

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