Bash JBoss初始化脚本-陷阱问题
我有一个脚本,用于启动/停止JBossAS(v7.1.1)等。我在SUSE Enterprise 11上运行,因此提供的initscript无法工作。我的脚本遇到的问题是从未调用过cleanup函数Bash JBoss初始化脚本-陷阱问题,bash,jboss,jboss7.x,init.d,shell-trap,Bash,Jboss,Jboss7.x,Init.d,Shell Trap,我有一个脚本,用于启动/停止JBossAS(v7.1.1)等。我在SUSE Enterprise 11上运行,因此提供的initscript无法工作。我的脚本遇到的问题是从未调用过cleanup函数 #!/bin/sh HOME="/var/rulesserver" CURRENT=$HOME/logs/current LOGFILE=$HOME/logs/`date -u +%Y-%m-%d-%H-%M-%S`.log COMMAND=/usr/local/jboss/bin/standal
#!/bin/sh
HOME="/var/rulesserver"
CURRENT=$HOME/logs/current
LOGFILE=$HOME/logs/`date -u +%Y-%m-%d-%H-%M-%S`.log
COMMAND=/usr/local/jboss/bin/standalone.sh
SELF=/usr/sbin/jboss-as-standalone
function cleanup() {
rm $CURRENT
}
function run() {
trap cleanup 1 2 3 6 15
nohup $COMMAND &> $CURRENT
}
case $1 in
"start" )
echo "Starting the server..."
if [ -e $CURRENT ]
then
echo "ERROR: The server is already running"
else
ln -s $LOGFILE $CURRENT
run &
echo "Server started"
fi
;;
"stop" )
echo "Stopping the server..."
killall java
echo "Server stopped"
;;
"status" )
if [ -e $CURRENT ]
then
echo "The server is currently running"
else
echo "The server is currently stopped"
fi
;;
"cleanup" )
cleanup
;;
"restart" )
$SELF stop
$SELF start
;;
* )
$SELF start
;;
esac
我可能会感到困惑,但你能不能不这样做
function run() {
( nohup $COMMAND ; rm $CURRENT )
}
?
$COMMAND会一直阻塞到我死,然后会有一个rm,然后子shell会退出?没有必要设陷阱。我可能会感到困惑,但你能不能不这样做
function run() {
( nohup $COMMAND ; rm $CURRENT )
}
?
$COMMAND会一直阻塞到我死,然后会有一个rm,然后子shell会退出?不需要陷阱。standalone.sh启动脚本中提供了一种方法,您可以使用它来控制其行为。只需将_BACKGROUND中的环境变量LAUNCH_JBOSS_的值设置为某个值,即
LAUNCH_JBOSS_IN_BACKGROUND=true
在调用脚本之前,您将不再需要nohup来为您执行任务,并且不需要进行清理
此外,还有一个选项告诉JBossAS将“控制台输出”写入文件,这样您仍然可以获得它将生成的消息
还有一件事:我个人不认为在所有可能的情况下,
killall java
都是100%聪明的事情。standalone.sh启动脚本中提供了一种方法,可以用来控制它的行为。只需将_BACKGROUND中的环境变量LAUNCH_JBOSS_的值设置为某个值,即
LAUNCH_JBOSS_IN_BACKGROUND=true
在调用脚本之前,您将不再需要nohup来为您执行任务,并且不需要进行清理
此外,还有一个选项告诉JBossAS将“控制台输出”写入文件,这样您仍然可以获得它将生成的消息
还有一件事:我个人不认为在所有可能的情况下,
killall java
是100%聪明的事情。我不知道这会奏效。我担心如果第一个命令被杀了,第二个命令将永远无法运行。我不知道这会起作用。我担心如果第一个命令被杀死,第二个命令将永远不会运行。我同意killall java
是相当危险的。我在JBoss的服务器上安装了Java,所以我非常确定计算机上没有其他任何东西使用Java。我同意killall Java
是相当危险的。我在JBoss的服务器上安装了Java,所以我非常确定在计算机上没有其他使用Java的东西。