Cron и скрипт sh с запуском ява-приложения, не работают...

Автор: l_2001 Дата: 06.08.2009 11:30 Здравствуйте!
Возникла необходимость запустить скриптик по расписанию. Скриптик такой:
#!/bin/sh
cd /home/user/program
./java/bin/java -jar program.jar &

Руцями стартует без проблем! Прописываю в crontab строчку:
0 10 * * * /home/user/program/RunMe.sh

После запуска в логах следующее:
From user@localhost.localdomain Thu Aug 6 09:26:01 2009
Return-Path: <user@localhost.localdomain>
Received: from localhost.localdomain (comp [127.0.0.1])
by localhost.localdomain (8.14.1/8.14.1) with ESMTP id n766Q1JH009440
for <user@localhost.localdomain>; Thu, 6 Aug 2009 09:26:01 +0300
Received: (from user@localhost)
by localhost.localdomain (8.14.1/8.14.1/Submit) id n766Q1U7009438;
Thu, 6 Aug 2009 09:26:01 +0300
Date: Thu, 6 Aug 2009 09:26:01 +0300
Message-Id: <200908060626.n766Q1U7009438@localhost.localdomain>
From: root@localhost.localdomain (Cron Daemon)
To: user@localhost.localdomain
Subject: Cron <user@comp> /home/user/program/RunMe.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/user>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=user>
X-Cron-Env: <USER=user>

java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
at java.awt.Window.<init>(Window.java:317)
at java.awt.Frame.<init>(Frame.java:419)
at java.awt.Frame.<init>(Frame.java:384)
at javax.swing.JFrame.<init>(JFrame.java:150)

Всезнающий ALL - объясните, как это и как с этим бороться? Похоже, что ему требуется явное указание DISPLAY переменной, а куда ее вписать? Система асп12.0
Спасибо за ответ!
Re: cron и скрипт sh с запуском ява-приложения, не работают... 06.08.2009 15:03daydrim задайте в скрипте переменную DISPLAY
export DISPLAY=IP.AD.D.R:0.0
ну IP.AD.D.R - это понятно что какой-то айпишник надо указать Улыбка

икс сервер джава приложение просит, а где иксы стартовано оно не знает Улыбка куда нибудь в localhost ) где иксы подняты, короче туда и загнать. токо надо чтобы иксы слушали по tcp... ну и понятно это небезопасно.
Re: cron и скрипт sh с запуском ява-приложения, не работают... 06.08.2009 16:15l_2001 Не срабатывает Грустный После выполнения export, выдается сообщение что нет доступа к jar файлу. Я пробовал запускать не через скрипт, а последовательно набираю export, а после - java -jar program.jar. Может быть я не прав?
Re: cron и скрипт sh с запуском ява-приложения, не работают... 06.08.2009 21:42peter_ir А в те моменты, когда скрипт запускался вручную и cron'ом,
user был в системе?
Re: cron и скрипт sh с запуском ява-приложения, не работают... 06.08.2009 23:07l_2001 Простите, я Вас не очень понял, но, если это имелось в виду, то crontab редактировался от имени пользователя, а сам скриптик отдан в пользование user! В общем-то эта задачка и затачивалась под профилем пользователя user. Для эксперимента, попробовал запустить стандартный текстовый редактор по расписанию, так он сработал и даже не поперхнулся! Выходит, что это java требует чего-то специфического?
Re: cron и скрипт sh с запуском ява-приложения, не работают... 07.08.2009 07:08BigAndy Удивляет...
А не пытались смтреть логи хотя бы крона????
Re: cron и скрипт sh с запуском ява-приложения, не работают... 07.08.2009 14:04peter_ir Я имел в виду, залогинен ли user.
Вообще же здесь важно, что при запуске скрипта руками у вас есть shell - лидер сеанса
и у него есть управляющий терминал, а при запуске cron'ом управляющего терминала
нет, т.е. для вывода панели на дисплей user'u надо, наверное, в скрипте процесс, её
выводящий, как-то подключить к его сеансу. Это делает getpgid, но сам я таких вещей
не делал, конкретно подсказать не могу.
Re: cron и скрипт sh с запуском ява-приложения, не работают... 07.08.2009 14:14l_2001 Да, конечно смотрел! Вот кусочек лога cron... Только для меня это ничего не говорит, кроме как, что ошибок нет!

Aug 6 14:17:01 user crond[2276]: (user) RELOAD (cron/user)
Aug 6 14:17:01 user crond[9034]: (user) CMD (/home/user/program/RunMe.sh)
Aug 6 14:19:02 user crontab[9195]: (user) BEGIN EDIT (user)
Aug 6 14:19:15 user crontab[9195]: (user) REPLACE (user)
Aug 6 14:19:15 user crontab[9195]: (user) END EDIT (user)
Aug 6 14:20:01 user crond[2276]: (user) RELOAD (cron/user)
Aug 6 14:20:01 user crond[9216]: (user) CMD (/home/user/program/RunMe.sh)
Re: cron и скрипт sh с запуском ява-приложения, не работают... 07.08.2009 14:51smaharbA а есть ли дисплей в жизни вообще, и зачем он нужен да и х11 зачем ?
Re: cron и скрипт sh с запуском ява-приложения, не работают... 07.08.2009 15:00l_2001 А как проверить наличие дисплея Улыбка ? Почему java требует X11 DISPLAY и именно java? Система установлена по умолчанию и ручками ничего отдельно не указывалось!
Re: cron и скрипт sh с запуском ява-приложения, не работают... 07.08.2009 15:30l_2001 Все решилось до смешного просто! Вот скрипт, который стартует:

#!/bin/sh
DISPLAY=:0
export DISPLAY
cd /home/user/program
./java/bin/java -jar program.jar &

Всем спасибо за помощь!
RSS-материал