Crontab 重新启动 jboss 服务器

Crontab 重新启动 jboss 服务器

我想创建一个 crontab 来每晚重启我的 jboss 服务器。没什么特别的,我认为这很容易......

我得到了这个 crontab:

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 的语法,... 但都不起作用。这很烦人。

你能帮助我吗?提前谢谢。

答案1

run.sh脚本将日志信息保存在控制台上。如果您想在后台运行它,您应该:

  1. 将输出重定向到/dev/null

    run.sh -c all &> /dev/null &
    
  2. 关闭控制台日志记录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变量并在其中添加您的凭据。

答案2

我对此不太确定,但也许您对run.sh脚本的调用在 cron 脚本完成后被终止,因为您是在后台启动它 (&)。您可以尝试使用 来调用它,nohup以便即使 cron 进程完成后也能继续运行,例如

/usr/bin/nohup /home/user/SoftZ/jboss-5.1.0.GA/bin/run.sh -c all &

当你想在远程机器上运行一个进程,但在启动后注销时,这种方法也有效。也许可以试一试。

相关内容