Я хочу создать crontab для перезапуска моего сервера jboss каждую ночь. Ничего особенного, и я подумал, что это будет легко ....
Получил вот такой кронтаб:
0 22 * * * /home/user/SoftZ/jboss-5.1.0.GA/bin/jboss_restart.sh
Итак, каждую ночь в 22 часа он запускает jboss_restart.sh, который выглядит следующим образом:
#!/bin/sh
echo restarting jboss >> /home/user/SoftZ/logz.log
for pjboss in `ps -Af | grep -v grep | grep jboss | grep -v jboss_restart.sh | awk '{ print $2 }'`
do
kill -9 ${pjboss}
echo Killing >> /home/user/SoftZ/logz.log
done
echo Starting >> /home/user/SoftZ/logz.log
sh /home/user/SoftZ/jboss-5.1.0.GA/bin/run.sh -c all &
echo Finish >> /home/user/SoftZ/logz.log
Итак, это базовый ... cron запускается хорошо и jboss_restart.sh тоже, все регистрируется в logz.log, и активный процесс jboss убит, но run.sh не запускается ... Я пробовал несколько вещей, таких как chmod в скрипте измените синтаксис команды и crontab, ... но ничего не работает. Это очень раздражает.
Не могли бы вы мне помочь, пожалуйста. Заранее спасибо.
Я не совсем уверен в этом, но, возможно, ваш звонок в run.sh
скрипт завершается после завершения вашего скрипта cron, поскольку вы запускаете его в фоновом режиме (&). Вы можете попробовать позвонить с помощью nohup
чтобы он работал даже после завершения процесса cron, e. грамм.
/usr/bin/nohup /home/user/SoftZ/jboss-5.1.0.GA/bin/run.sh -c all &
Это также работает, когда вы хотите запустить процесс на удаленном компьютере, но выйти из системы после его запуска. Может, попробуй.
В run.sh
Скрипт сохраняет информацию о логах на консоли. Если вы хотите запустить его в фоновом режиме, вам следует:
Перенаправить вывод на /dev/null
:
run.sh -c all &> /dev/null &
Отключите логирование консоли в login-conf.xml
.
Но я думаю, что лучшим решением будет использование jboss_init_redhat.sh
сценарий. Вы можете найти его в bin
каталог (там же, где run.sh
скрипт размещен).
В jboss_init_redhat.sh
сценарий является оболочкой run.sh
которые позволяют использовать его как скрипт Init V - он имеет такие параметры, как start
, stop
. Вы должны правильно настроить его, но это довольно просто - просто откройте его и отредактируйте некоторые переменные bash.
У вас могут возникнуть проблемы, когда вы используете какого-либо пользователя для подключения к консоли JMX. В этом случае вам нужно изменить этот сценарий и добавить учетные данные - использование JMX для остановки экземпляра JBoss.
Вы должны изменить JBOSS_CMD_STOP
переменную и добавьте туда свои учетные данные.