Вы здесь

vixie-cron не выполняет задания [SOLVED]

Здравствуйте уважаемые.

Поставил систему, все отлично работает, решил вот пару заданий выполнять в определенное время для этого поставил vixe-cron, все поставилось отлично, никаких варнингов и прочего, создал скрипт, простой, я его вручную выполняю, в лог пишется результат, переместил его в каталог, в crontab -e указал путь и время, причем все правила соблюдал, по замыслу скрипт должен исполнятся каждые 5-ть минут, но в логах ничегои действий никаких не производит, сосбтвенно действие то обыкновенный пинг с количесвом пакетов равным 10-ти, в лог пишется сколько прошло пингов а сколько нет, если в ручную то скрипт все пишет в лог прекрасно и он исполняется без проблем а вот в кроне не исполянет, в логе messages пишет:

cron[5482]: (root) CMD (/bin/run-parts /etc/cron.5minutly 1>/dev/null 2>/dev/null)

а результата в логе нет...
Не подскажете в чем может быть проблемка?

вот crontab -e:

# 1> /dev/null
# min hour day month weekday command
*/5 * * * * /bin/run-parts /etc/cron.5minutly 1>/dev/null 2>/dev/null
<тут пустая строка>

во-первых, тогда уж правильней:
*/5 * * * * /bin/run-parts /etc/cron.5minutly >/dev/null 2>&1

во-вторых, а что в /etc/cron.{allow,deny}?

в-третьих, приведён синтаксис запуска пользовательского
крона, а рутовый-то уже запущен при старте системы. ;)
для рута, кажется, достаточно отредактировать /etc/crontab
и послать kill -HUP процессу /usr/sbin/cron

klark73 написал:
во-первых, тогда уж правильней:
*/5 * * * * /bin/run-parts /etc/cron.5minutly >/dev/null 2>&1

во-вторых, а что в /etc/cron.{allow,deny}?

в-третьих, приведён синтаксис запуска пользовательского
крона, а рутовый-то уже запущен при старте системы. ;)
для рута, кажется, достаточно отредактировать /etc/crontab
и послать kill -HUP процессу /usr/sbin/cron

В принципе я никогда не редактировал /etc/cron (уже не на первый десяток машин ставил gentoo с vixie-cron) и никогда проблем с кроном не возникало с запуском по расписанию заданий, ну а строка ту которую я привел, тоже вполне подходящая и не противоречащая, да и cron записан дефолтно при запуске системы он автоматом загружается и действует под рутом, в самой ос кроме рута (я имею в виду рабочих пользователей) никого нет и все сервисы стартутют под рутом т.к. эта машина никак с внешним миром не общается и интернета у него на данный момент нет и не предвидится.
Никаких ошибок /etc/cron.deny нет.

Раз работает, ваш файл должен сохраняться сюда:
less /var/spool/cron/crontabs/root -- проверьте.
crontab -l

Похоже, задание запускается и выполняется, судя по логу.
Так что добавить не чего, вариант (1), попробуйте.

Я вариант (3) делал - тоже без проблем.
можно вместо kill -HUP просто /etc/init.d/vixie-cron restart

klark73 написал:
Раз работает, ваш файл должен сохраняться сюда:
less /var/spool/cron/crontabs/root -- проверьте.
crontab -l

Похоже, задание запускается и выполняется, судя по логу.
Так что добавить не чего, вариант (1), попробуйте.

Я вариант (3) делал - тоже без проблем.
можно вместо kill -HUP просто /etc/init.d/vixie-cron restart

Ах да, забыл, я после добавления рестартовывал сервис крон-а... как же... точно точно, но и этот способ никак не повлиял на результат, даже больше напишу, я стал сомневатся что я правильно установил крон, решил уточнить ключи юзе, переустановил emerge -C vixie-cron а потом снова emerge -av vixie-cron убедившишись что ключи что по дефолту вполне устраивают, написал Yes и переустановил cron, снова вписал в crontab -e задание (с пустой строчкой в конце, писали что так нужно), сохранил, убедился crontab -l в том что задание пристутствует, перезагрузил крон /etc/init.d/vixie-cron restart успешно перезапустился, подождал 5-ть минут а результат "0"... куда копать?
P.S. Кстати по команде less /var/spool/cron/crontabs/root мое задание тоже присутствует.

> по команде less /var/spool/cron/crontabs/root мое задание тоже присутствует

Главное, что присутствует в логе это:
cron[5482]: (root) CMD (/bin/run-parts /etc/cron.5minutly 1>/dev/null 2>/dev/null)

значит задание-то выполняется! ;)

вот это просто измените и всё:
1>/dev/null 2>/dev/null
на:
>/dev/null 2>&1

а там уже первыми строчками:
#!/bin/bash
logger "My JOB Started! :)"

и права на файл chmod +x /bin/run-parts...

Цитата:
вот это просто измените и всё:
1>/dev/null 2>/dev/null
на:
>/dev/null 2>&1

Вот это попробую, результат отпишу

Не помогло...
команда

Цитата:
chmod +x /bin/run-parts

выдал следуещее

Цитата:
chmod: невозможно получить доступ к `/bin/run-parts': Нет такого файла или каталога

я эту команду (/bin/run-parts) скопировал из вашего же журнала!
задание выполняется в точности, как вы его написали в crontab-е,
запись попадает в журнал, что задание запущено,
но поскольку путь неверный, ничего больше не происходит... ;)

klark73 написал:
я эту команду (/bin/run-parts) скопировал из вашего же журнала!
задание выполняется в точности, как вы его написали в crontab-е,
запись попадает в журнал, что задание запущено,
но поскольку путь неверный, ничего больше не происходит... ;)

*/5 * * * * /bin/run-parts /etc/cron.5minutly >/dev/null 2>&1
/bin/run-parts - этот путь у меня на соседнем сервере так же пристутсвует в задании, а задание откуда выполнять берется из пути /etc/cron.5minutly, этот путь /bin/run-parts вообще не нужно указывать?
Нужно просто в задании вот так написать?
*/5 * * * * /etc/cron.5minutly >/dev/null 2>&1
и все?

Если речь идёт о пользовательском кроне, то его формат:
ПЕРИОД КОМАНДА [ПАРАМЕТРЫ]

КОМАНДА - это то, что имеет право на исполнение в оболочке (SHELL=)
В глобальном рутовом /etc/crontab-е между ПЕРИОДОМ и КОМАНДОЙ
есть ещё одно поле ЮЗЕР (от имени которого будет запущено задание)
но вообще-то это всё RTFM! ;)

Короче, какую команду нужно периодически выполнять, ту и ставьте...

klark73 написал:
Если речь идёт о пользовательском кроне, то его формат:
ПЕРИОД КОМАНДА [ПАРАМЕТРЫ]

КОМАНДА - это то, что имеет право на исполнение в оболочке (SHELL=)
В глобальном рутовом /etc/crontab-е между ПЕРИОДОМ и КОМАНДОЙ
есть ещё одно поле ЮЗЕР (от имени которого будет запущено задание)
но вообще-то это всё RTFM! ;)

Короче, какую команду нужно периодически выполнять, ту и ставьте...

Попробую вот это
*/5 * * * * /etc/cron.5minutly >/dev/null 2>&1
результат отпишу

Если дать такую команду:
/etc/cron.5minutly >/dev/null 2>&1
с консоли и она будет делать то, что вам надо,
конечно же всё должно работать!...

klark73 написал:
Если дать такую команду:
/etc/cron.5minutly >/dev/null 2>&1
с консоли и она будет делать то, что вам надо,
конечно же всё должно работать!...

в общем то с такой строкой в крон-е задание стало выполнятся:
*/5 * * * * /etc/cron.5minutly/p.sh >/dev/null 2>&1
Но а если в каталоге /etc/cron.5minutly не одно а 100 заданий, с разными именами, мне что плодить 100 строк для каждого задания о_0 ?
Вот у меня на одном из компьютеров в каталоге /etc/cron.5minutly имеются 8 заданий которые должны выполнятся, и они выполняются без проблем со строкой
*/5 * * * * /bin/run-parts /etc/cron.5minutly 1>/dev/null 2>/dev/null

как тут то быть?

Кстати сейчас в этот каталог /etc/cron.5minutly добавил второе задание, строку изменил на
*/5 * * * * /etc/cron.5minutly/* >/dev/null 2>&1
первое задание исполняется а второе нет... о как о_0.
сервис рестартовывал.

Где собака то порылась?
Если кто знает, объясните мне пожалуйста почему с такой строкой
*/5 * * * * /bin/run-parts /etc/cron.5minutly 1>/dev/null 2>/dev/null
на одном сервере выполняется прекрасно а на другом вообще не исполняет как нужно?

По-моему, всё очевидно:

sidsoft67 написал:
chmod: невозможно получить доступ к `/bin/run-parts': Нет такого файла или каталога

Похоже, нету у тя почему-то /bin/run-parts :) , если ты конечно из под рута птался поменять права.
Сдлеай ls -l /bin/run-parts
Если его таки точно нету, то revdep-rebuild.

PS Из консоли команда /bin/run-parts --test /etc/cron.5minutly выполняется? Если да, то что выводит?

joper написал:
По-моему, всё очевидно:

sidsoft67 написал:
chmod: невозможно получить доступ к `/bin/run-parts': Нет такого файла или каталога

Похоже, нету у тя почему-то /bin/run-parts :) , если ты конечно из под рута птался поменять права.
Сдлеай ls -l /bin/run-parts
Если его таки точно нету, то revdep-rebuild.

PS Из консоли команда /bin/run-parts --test /etc/cron.5minutly выполняется? Если да, то что выводит?

#ls -l /bin/run-parts
ls: невозможно получить доступ к /bin/run-parts: Нет такого файла или каталога

# /bin/run-parts --test /etc/cron.5minutly
-bash: /bin/run-parts: Нет такого файла или каталога

# revdep-rebuild
-bash: revdep-rebuild: команда не найдена

Всё ясно.
пересобери sys-apps/debianutils

ЗЫ: ЧТобы был revdep-rebuild поставь gentoolkit.

> Вот у меня на одном из компьютеров в каталоге /etc/cron.5minutly имеются 8 заданий которые должны выполнятся, и они выполняются без проблем со строкой

Вот и перепишите с того компьютера исполняемый скрипт /bin/run-parts, которого тут у вас нету.
Совершенно очевидно, что речь идёт о реализации принципа, аналогичного скрипту /usr/sbin/run-crons "искоробки".
O_o, ну и сказанул! /bin/run-parts входит в debianutils, это не скрипт!

В общем то run-parts я скопировал, и все теперь работает нормально, но вот я хочу выяснить происхождение этого ELF-файла? Вместе с каким пакетом он ставится или при каких ключах юзе он появляется?

Всё ясно.
пересобери sys-apps/debianutils

O_o, ну и сказанул! /bin/run-parts входит в debianutils, это не скрипт!

На машинах на которых устанавливал Gentoo до этой, run-parts появлялось без каких либо усилий и установок пакетов дебиана и прочего, видимо подтягивался "автоматом" с vixie-cron, сейчас же видимо её убрали. Это мое личное мнение или скорее догадка не более. Почему её убрали не ясно.

Вы верно заметили, что подтягивался пакетик автоматом.
Специально решил запостить с машины, настроенной ДВА ГОДА НАЗАД.
МИР там с тех пор не обновлялся! ;)

equery d debianutils
app-portage/gentoolkit-0.2.2

eix debianutils
Installed: 2.15-r1(00:24:21 07.02.2007)

На современной настройке это осталось в силе
(sys-apps/debianutils-2.28.5), только теперь
ещё и ca-certificates его же подтягивают...

А gentoolkit стоит, наверное, у каждого
красноглазого гентушнега!... =)))

klark73 написал:
Вы верно заметили, что подтягивался пакетик автоматом.
Специально решил запостить с машины, настроенной ДВА ГОДА НАЗАД.
МИР там с тех пор не обновлялся! ;)

equery d debianutils
app-portage/gentoolkit-0.2.2

eix debianutils
Installed: 2.15-r1(00:24:21 07.02.2007)

На современной настройке это осталось в силе
(sys-apps/debianutils-2.28.5), только теперь
ещё и ca-certificates его же подтягивают...

А gentoolkit стоит, наверное, у каждого
красноглазого гентушнега!... =)))

На многих машинах ДО я никогда не ставил ни app-portage/gentoolkit-0.2.2 ни gentoolkit (просто несколько машин работают в качестве роутера и gentoolkit там ни к чемму), но elf файл run-parts "автоматом" подтягивался, и видимо из vixie-cron.

В третий раз! http://gentoo.ru/node/13160#comment-90969 =)))