Cronjob с Jelastic и Glassfish

Я запускаю веб-приложение (MyCronTest) на сервере Glassfish в среде Jelastic. Это веб-приложение содержит сервлет (/test), который я хотел бы регулярно вызывать с помощью cron-job.

Поэтому я следовал этому руководству из документации Jelastic, но они используют Tomcat< /em> вместо Glassfish, и я не совсем уверен в путях и куда поместить какой файл... и теперь я потерян;)

сервлет
При вызове сервлета непосредственно в моем браузере он выводит следующую строку на System.out:

test executed at 05/03/2014 15:00

файл bash для выполнения
Я создал сценарий bash с именем myCronJob.sh и поместил его в каталог glassfish3/temp:

#!/bin/bash
curl http://myGlassfish.jelastic.dogado.eu/MyCronTest/test;

Я, конечно, протестировал его, он исполняемый и работает (по крайней мере, когда я запускаю его на своем компьютере).

планировщик событий cron
согласно руководству есть файл /cron/tomcat мне нужно отредактировать. Ну, я нашел /cron/glassfish, который (я предполагаю) должен делать то же самое.

# IMPORTANT NOTE!
# Please make sure there is a blank line after the last cronjob entry.
*/1 * * * * /opt/glassfish3/temp/myCronJob.sh

Я добавил пустую строку в конце, как мне сказали. я даже пробовала с

*/1 * * * * /bin/bash /opt/glassfish3/temp/myCronJob.sh

как они предложили в учебнике. Но до сих пор нет выхода. Нет ошибки .. просто пустые файлы журнала.

Кто-нибудь знает, что мне здесь не хватает? Я делаю что-то неправильно?

Решение / Изменить

Благодаря Дэмиену ответу Наконец-то я смог сузить круг своей проблемы. На самом деле проблема была вызвана строкой в ​​моем bash-скрипте:

curl http://myGlassfish.jelastic.dogado.eu/MyCronTest/test;

должны были быть

curl http://localhost/MyCronTest/test;

так как я был заблокирован брандмауэром. К счастью для меня, мой Glassfish работает на той же машине/в той же среде, поэтому localhost работает.
Все остальное правильно.


person GameDroids    schedule 05.03.2014    source источник
comment
Работает ли /bin/bash /opt/glassfish3/temp/myCronJob.sh только у вас или, собственно, у пользователя, которому вы добавили crontab?   -  person fedorqui 'SO stop harming'    schedule 05.03.2014
comment
если честно я не уверен. Я установил разрешения myCronJob.sh, чтобы все могли его прочитать. Он говорит, что он принадлежит пользователю 700 и группе 700, как и все файлы в каталоге temp. И я не вижу никакой возможности добавить или изменить каких-либо пользователей на Jelastic в этом отношении.   -  person GameDroids    schedule 05.03.2014
comment
Вы имеете в виду, что принадлежит пользователю 700 или разрешения 700? т.е. rwx------ Если последнее, то попробуйте изменить разрешения на 755, используя chmod 755 /opt/glassfish3/temp/myCronJob.sh, чтобы позволить другим пользователям читать и выполнять файл.   -  person Josh Jolly    schedule 05.03.2014
comment
Я имел в виду пользователя 700 (кто бы это ни был). Но я сделал то, что вы сказали с chmod 755.. хотя это ничего не изменило. У меня есть только ftp-доступ и я не могу возиться с ssh. Но насколько я знаю права не меняются при копировании файла через ftp   -  person GameDroids    schedule 05.03.2014


Ответы (1)


Ну, я нашел /cron/glassfish, который (я предполагаю) должен делать то же самое.

Верный.

Но до сих пор нет выхода. Нет ошибки .. просто пустые файлы журнала.

Предполагая, что вы правильно загрузили свой файл в /opt/glassfish3/temp/myCronJob.sh, я рекомендую вам попытаться направить вывод cron в ваш собственный файл журнала или отправить его вам по электронной почте:

MAILTO="[email protected]"
*/1 * * * * /opt/glassfish3/temp/myCronJob.sh 2&1 > /opt/glassfish3/glassfish/nodes/localhost-domain1/instance-168458181/logs/cronoutput.log

Обратите внимание, что электронная почта может быть отфильтрована вашими спам-фильтрами из-за таких вещей, как отсутствие PTR (обратный DNS) и т. Д., Но это нормально использовать для целей тестирования / отладки (только не полагайтесь на то, что эти письма пройдут для чего-либо критично!)

Если эти советы вам не помогли, то я рекомендую обратиться в службу поддержки вашего хостинг-провайдера, чтобы проверить права доступа к файлу .sh, вывод при выполнении вручную и содержимое файла журнала cron (все, с чем вам могут помочь только они).

person Damien - Layershift    schedule 05.03.2014
comment
Спасибо за вашу помощь! он все еще не работает, как я ожидаю, но по крайней мере был создан пустой cronoutput.log ... так что crons работает. Мне просто нужно выяснить, почему bash-скрипт не работает. Но я уже чувствую приближение решения, спасибо :) - person GameDroids; 06.03.2014
comment
даже bash-скрипт работает!!! просто curl не работает ... теперь я чувствую себя действительно глупо;) - person GameDroids; 06.03.2014
comment
@GameDroids вам удалось решить проблему с curl или этот бит все еще не решен? (если завиток все еще не решен, опубликуйте новый вопрос с подробностями...) - person Damien - Layershift; 06.03.2014
comment
Да! Curl не может связываться с другими адресами, кроме localhost (наверное, брандмауэр). Поэтому я изменил его, и теперь он работает отлично. Так что еще раз спасибо за ваш ответ. Это привело меня на правильный путь - теперь я знаю, как писать логи из crontab, и мне даже не нужно больше использовать bash-скрипт :) - person GameDroids; 07.03.2014