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

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

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

Непрочитанное сообщение yurko-i » 2012-05-23 16:45:04

Привет всем.
Помогите плз. разобраться с 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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Charlz_Klug_
проходил мимо

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

Непрочитанное сообщение Charlz_Klug_ » 2012-05-23 17:22:27

yurko-i писал(а):Привет всем.
Запускаю скрипт из командной строки, работает.
Как запускаете из командной строки?

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

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

Непрочитанное сообщение yurko-i » 2012-05-23 17:24:38

Так:

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

sh killspamers.sh

Charlz_Klug_
проходил мимо

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

Непрочитанное сообщение Charlz_Klug_ » 2012-05-23 18:01:53

yurko-i писал(а):Так:

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

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

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

./killspamers.sh
?

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

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

Непрочитанное сообщение yurko-i » 2012-05-23 18:12:25

Немного не понял, извините.
./killspamers.sh
Это мне откуда из командной строки или из крона?
Если из командной то нет.
Если из крона в логе вот что:

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

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

Charlz_Klug_
проходил мимо

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

Непрочитанное сообщение Charlz_Klug_ » 2012-05-23 18:32:21

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

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

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

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

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

snorlov
подполковник
Сообщения: 3929
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

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

Непрочитанное сообщение snorlov » 2012-05-23 18:35:04

Charlz_Klug_ писал(а):
yurko-i писал(а):Так:

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

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

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

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

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

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

Непрочитанное сообщение yurko-i » 2012-05-23 18:41:15

Спасибо Charlz_Klug_
chmod a+x killspamers.sh
Выполнил не помогает.
# mail

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

no mail for root

Charlz_Klug_
проходил мимо

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

Непрочитанное сообщение Charlz_Klug_ » 2012-05-23 18:49:14

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

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

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

Непрочитанное сообщение rayder » 2012-05-24 19:47:16

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" раз уж вы баш хотите)
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

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

Непрочитанное сообщение yurko-i » 2012-05-25 16:18:27

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" раз уж вы баш хотите)
Спасибо, доберусь до работы попробую.