LINUX.ORG.RU

crontab - почему то не работает


0

1
root@server:/www/additions# crontab -u redmine -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXX7evk3b installed on Fri Nov 30 20:27:11 2012)
# (Cronie version 4.2)
30 20 * * * /www/additions/send_letters.sh
* * * * * echo "one" >> ~/test

Вторая строка (echo «one» >> ~/test) успешно отрабатывает, что говори мне о том, что сам cron работает. Первая почему-то нет, хотя выполнить этот скрипт под указанным пользователем вполне удается.

На всякий случай содержимое send_letters.sh:

root@server:/www/additions# ls -la
...
-rwxrwxrwx  1 root root   37 Nov 30 20:26 send_letters.sh

root@server:/www/additions# cat send_letters.sh
cd /www/redmine-2.1.0
rake admin:mail

В чем может быть дело ? На что обратить внимание ?

Да, ожидаю, что задача выполнится в 20 часов 30 минут каждый день. Время на сервере определяю с помощью:

root@server:/www/additions# date
Fri Nov 30 21:00:48 MSK 2012
★★

Попробуй добавить в скрипт #!/bin/bash и вызывать в нём rake с абсолютным путём.

Можно также echo «one» >> ~/test поместить в него же, или даже date >> ~/test

sin_a ★★★★★ ()
Последнее исправление: sin_a (всего исправлений: 2)

Шебанг? Наличие rake в $PATH? Почта от Cron Daemon?

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

Все сделал:

#!/bin/bash

echo "start" >> ~/log
date >> ~/log
cd /www/redmine-2.1.0
/usr/bin/rake gmcs:mail >> ~/log
echo "finish" >> ~/log
date >> ~/log

cat ~/log:

start
Fri Nov 30 21:37:02 MSK 2012
finish
Fri Nov 30 21:37:02 MSK 2012

rake задача представляет из себя рассылку писем и не может выполняться мгновенно, значит она даже не запускается. Что странно, что в ~/log нет информации об ошибке запуска rake...

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

ошибки, обычно, попадают в stderr... так что, настрой, чтобы кронтаб слал почту (переменная MAIL) или в своём скрипте добавь перед >> в каждой строке 2>&1

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

Может быть не хватает каких то переменных окружения?

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

Сорри, был не прав:

/usr/bin/rake gmcs:mail &> ~/log 

дает:

rake aborted!
undefined method `require_relative' for main:Object

(See full trace by running task with --trace)
finish
Fri Nov 30 21:46:02 MSK 2012

Такое может быть, но только если rake запускается не из под нужного мне пользователя (redmine).

Я правильно понимаю, что если я создаю задачу через `crontab -u redmine -e`, то и запускаться она будет из под этого пользователя ?

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

только если rake запускается не из под нужного мне пользователя

... или не из того каталога ;)

проверь, не опечатался ли )
воткни еще в тестовый скрипт pwd и whoami

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

Не, оно в любом окружении должно работать, не только production.

Чуть переписал скрипт, чтобы не было relative_require, теперь оно вот так ругается:

 
rake aborted!
Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (mysql2 is not part of the bundle. Add it to Gemfile.)

Все это дело у меня под RVM работает, который хранит все свои данные в ~/.rvm и такое у меня ощущение, что этот rake все-таки стартует под какой-то левой учетной записью, которая не находит RVM....

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

Да, это помогло.

С помощью `rvm env --path` определяем директорию с файлами RVM для нужной версии ruby.

Далее первой строкой в sh файл добавляем этот путь:

source /home/redmine/.rvm/environments/ruby-1.9.3-p194

Еще раз всем спасибо за помощь.

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