我想创建一个 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
脚本将日志信息保存在控制台上。如果您想在后台运行它,您应该:
将输出重定向到
/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
变量并在其中添加您的凭据。
答案2
我对此不太确定,但也许您对run.sh
脚本的调用在 cron 脚本完成后被终止,因为您是在后台启动它 (&)。您可以尝试使用 来调用它,nohup
以便即使 cron 进程完成后也能继续运行,例如
/usr/bin/nohup /home/user/SoftZ/jboss-5.1.0.GA/bin/run.sh -c all &
当你想在远程机器上运行一个进程,但在启动后注销时,这种方法也有效。也许可以试一试。