Страница 1 из 1

Нужна помощь с crontab

Добавлено: 2012-05-23 16:45:04
yurko-i
Привет всем.
Помогите плз. разобраться с crontab.
Запускаю скрипт из командной строки, работает. А вот если через крон, не хочет.
Читал тут что дело может быть в абсолютных путях, прописал, не работает.
Вот еще:
spf писал(а):
Через команду
crontab -e

добавить первой строкой переменную
PATH=/bin:/usr/bin:/sbin:/usr/sbin

Тогда не надо будет писать полные пути в командах.

Тоже не получилось.
Помогите плз разобраться в чем дело.
Спасибо.

FreeBSD 7.3
/etc/crontab

Код: Выделить всё

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32.24.1.2.1 2010/02/10 00:26:20 kensmith Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin
#
#minute>hour<-->mday<-->month<->wday<-->who<--->command
#
*/5<--->*<----->*<----->*<----->*<----->root<-->/usr/libexec/atrun
#
# Save some entropy so that /dev/random can re-seed on boot.
*/11<-->*<----->*<----->*<----->*<----->operator /usr/libexec/save-entropy
#
# Rotate log files every hour, if necessary.
0<----->*<----->*<----->*<----->*<----->root<-->newsyslog
#
# Perform daily/weekly/monthly maintenance.
1<----->3<----->*<----->*<----->*<----->root<-->periodic daily
15<---->4<----->*<----->*<----->6<----->root<-->periodic weekly
30<---->5<----->1<----->*<----->*<----->root<-->periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time.  See adjkerntz(8) for details.
1,31<-->0-5<--->*<----->*<----->*<----->root<-->adjkerntz -a
#Чистим очередь екзима - удаляем пустых отправителей
*/1<--->*<----->*<----->*<----->*<----->root<-->/usr/MAILARC/killspamers.sh
*/10<-->*<----->*<----->*<----->*<----->root<-->/usr/MAILARC/killspamers.sh "c"


/usr/MAILARC/killspamers.sh

Код: Выделить всё

#!/bin/bash
# Определяем qualify_domain -- он нужен для удаления всякой лажи
domain=`/usr/local/sbin/exim -bP | /usr/bin/grep -i "^qualify_domain" | sed -e s/.*\=\ //g`
# Это очень шаманская строчка
/usr/local/sbin/exim -bpr | /usr/bin/grep '<' | /usr/bin/awk '{print $2}' | /usr/bin/grep '-' | /usr/bin/xargs /usr/local/sbin/exim -Mrm 2> /dev/null
# если скрипту передан параметр c, то включается более агрессивный режим
if [ "${1}" = "c" ]; then
    echo 'aggressive mode...'
    # Удаляем все баунсы старше 10 минут
    /usr/local/sbin/exiqgrep -o 600 -if '^<>$' |/usr/bin/xargs /usr/local/sbin/exim -Mrm
    # Удаляем сообщения с адресами начинающимися с подчерка, минуса или вертикальной черты
    /usr/local/sbin/exiqgrep -f '^<\_|^<\-|^<\|' -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
    /usr/local/sbin/exiqgrep -r '^\_|^\-|^\|' -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
    #Удаляем сообщения отправленные скриптами на китайские домены старше 10 минут
    /usr/local/sbin/exiqgrep -f "$domain" -r '.cn$' -o 600 -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
    # Удаляем любые сообщения отправленные скриптами, если они не доставлись за12 часов
    /usr/local/sbin/exiqgrep -f "$domain" -o 43200 -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
    exit
fi
# В мягком режиме удаляем только frozen баунсы и письма с невозможными адресами в заголовках
echo 'light mode...'
/usr/local/sbin/exiqgrep -zif '^<>$' |/usr/bin/xargs /usr/local/sbin/exim -Mrm
/usr/local/sbin/exiqgrep -f '^<\_|^<\-|^<\|' -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
/usr/local/sbin/exiqgrep -r '^\_|^\-|^\|' -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
/usr/local/sbin/exiqgrep -r '^\_|^\-|^\|' -i | /usr/bin/xargs /usr/local/sbin/exim -Mrm
/usr/local/sbin/exiqgrep -i -f '<>' | /usr/bin/xargs /usr/local/sbin/exim -Mrm

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 17:22:27
Charlz_Klug_
yurko-i писал(а):Привет всем.
Запускаю скрипт из командной строки, работает.
Как запускаете из командной строки?

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 17:24:38
yurko-i
Так:

Код: Выделить всё

sh killspamers.sh

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 18:01:53
Charlz_Klug_
yurko-i писал(а):Так:

Код: Выделить всё

sh killspamers.sh
А так запускается:

Код: Выделить всё

./killspamers.sh
?

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 18:12:25
yurko-i
Немного не понял, извините.
./killspamers.sh
Это мне откуда из командной строки или из крона?
Если из командной то нет.
Если из крона в логе вот что:

Код: Выделить всё

May 23 18:11:01 mail /usr/sbin/cron[35719]: (root) CMD (./killspamers.sh)

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 18:32:21
Charlz_Klug_
yurko-i писал(а):Немного не понял, извините.
./killspamers.sh
Это мне откуда из командной строки или из крона?
Если из командной то нет.
Всё ясно.

Код: Выделить всё

chmod a+x killspamers.sh
Вас должен спасти. И ещё: почитайте

Код: Выделить всё

sudo mail
или просто: .

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 18:35:04
snorlov
Charlz_Klug_ писал(а):
yurko-i писал(а):Так:

Код: Выделить всё

sh killspamers.sh
А так запускается:

Код: Выделить всё

./killspamers.sh
?
попробуйте поменять в первой строчке bash на sh, ну и конечно сделать файл скрипта исполняемым

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 18:41:15
yurko-i
Спасибо Charlz_Klug_
chmod a+x killspamers.sh
Выполнил не помогает.
# mail

Код: Выделить всё

no mail for root

Re: Нужна помощь с crontab

Добавлено: 2012-05-23 18:49:14
Charlz_Klug_
yurko-i писал(а):Спасибо Charlz_Klug_
chmod a+x killspamers.sh
Выполнил не помогает.
Под root'ом попробуйте. И смените bash на sh.

Re: Нужна помощь с crontab

Добавлено: 2012-05-24 19:47:16
rayder
1. А вы уверены что bash у вас лежит в /bin а не в /usr/local/bin/ ?
2. Полный путь для sed пропустили в скрипте
3. В кроне попробуйте прописать "*/1 * * * * root /bin/sh /usr/MAILARC/killspamers.sh" ("*/1 * * * * root /usr/local/bin/bash /usr/MAILARC/killspamers.sh" раз уж вы баш хотите)

Re: Нужна помощь с crontab

Добавлено: 2012-05-25 16:18:27
yurko-i
rayder писал(а):1. А вы уверены что bash у вас лежит в /bin а не в /usr/local/bin/ ?
2. Полный путь для sed пропустили в скрипте
3. В кроне попробуйте прописать "*/1 * * * * root /bin/sh /usr/MAILARC/killspamers.sh" ("*/1 * * * * root /usr/local/bin/bash /usr/MAILARC/killspamers.sh" раз уж вы баш хотите)
Спасибо, доберусь до работы попробую.