Bash 如何设置“退出”的退出代码;“地位”;Tomcat6的初始化脚本中的命令
我正在安装Tomcat6并对/etc/init.d/Tomcat6使用以下命令:Bash 如何设置“退出”的退出代码;“地位”;Tomcat6的初始化脚本中的命令,bash,tomcat6,chef-infra,init,chef-solo,Bash,Tomcat6,Chef Infra,Init,Chef Solo,我正在安装Tomcat6并对/etc/init.d/Tomcat6使用以下命令: #!/bin/bash # description: Tomcat6 service # processname: java # chkconfig: - 99 1 ## Note: CATALINA_HOME and CATALINA_PID are set elsewhere.## # Source function library. . /etc/init.d/functions # Source sys
#!/bin/bash
# description: Tomcat6 service
# processname: java
# chkconfig: - 99 1
## Note: CATALINA_HOME and CATALINA_PID are set elsewhere.##
# Source function library.
. /etc/init.d/functions
# Source sysconfig for tomcat6
if [ -f /etc/sysconfig/tomcat6 ]; then
. /etc/sysconfig/tomcat6
fi
[ -d "$CATALINA_HOME" ] || { echo "Tomcat requires $CATALINA_HOME."; exit 1; }
case $1 in
start|stop|run)
if su $TOMCAT_USER bash -c "cd $CATALINA_HOME/logs; $CATALINA_HOME/bin/catalina.sh $1"; then
echo -n "Tomcat $1 successful"
[ $1 == "stop" ] && rm -f $CATALINA_PID
else
echo -n "Error in Tomcat $1: $?"
fi
;;
restart)
$0 start
$0 stop
;;
status)
if [ -f "$CATALINA_PID" ]; then
read kpid < "$CATALINA_PID"
if ps --pid $kpid 2>&1 1>/dev/null; then
echo "$0 is already running at ${kpid}"
else
echo "$CATALINA_PID found, but $kpid is not running"
fi
unset kpid
else
echo "$0 is stopped"
fi
;;
esac
exit 0
我将初始脚本修改为:
#!/bin/bash
# description: Tomcat6 service
# processname: java
# chkconfig: - 99 1
# Source function library.
. /etc/init.d/functions
# Source sysconfig for tomcat6
if [ -f /etc/sysconfig/tomcat6 ]; then
. /etc/sysconfig/tomcat6
fi
[ -d "$CATALINA_HOME" ] || { echo "Tomcat requires $CATALINA_HOME."; exit 1; }
exit_var=0
case $1 in
start|stop|run)
if su $TOMCAT_USER bash -c "cd $CATALINA_HOME/logs; $CATALINA_HOME/bin/catalina.sh $1"; then
echo -n "Tomcat $1 successful"
[ $1 == "stop" ] && rm -f $CATALINA_PID
else
echo -n "Error in Tomcat $1: $?"
exit_var=1
fi
;;
restart)
$0 start
$0 stop
;;
status)
if [ -f "$CATALINA_PID" ]; then
read kpid < "$CATALINA_PID"
if ps --pid $kpid 2>&1 1>/dev/null; then
echo "$0 is already running at ${kpid}"
exit_var=0
else
echo "$CATALINA_PID found, but $kpid is not running"
exit_var=4
fi
unset kpid
else
echo "$0 is stopped"
exit_var=3 # Fixes issue with Chef not starting a stopped service.
fi
;;
esac
exit $exit_var
#/bin/bash
#描述:Tomcat6服务
#进程名称:java
#chkconfig:-99 1
#源函数库。
. /etc/init.d/functions
#tomcat6的源sysconfig
if[-f/etc/sysconfig/tomcat6];然后
. /etc/sysconfig/tomcat6
fi
[-d“$CATALINA_HOME”]|{echo“Tomcat需要$CATALINA_HOME.”退出1;}
退出变量=0
每箱1元
开始|停止|运行)
如果su$TOMCAT_用户bash-c“cd$CATALINA_HOME/logs;$CATALINA_HOME/bin/CATALINA.sh$1”;然后
echo-n“Tomcat$1成功”
[$1==“停止”]&&rm-f$CATALINA\u PID
其他的
echo-n“Tomcat$1中的错误:$?”
退出变量=1
fi
;;
重新启动)
零美元起价
0美元一站
;;
(状态)
如果[-f“$CATALINA_PID”];然后
阅读kpid<“$CATALINA\u PID”
如果ps--pid$kpid 2>&11>/dev/null;然后
echo“$0已在${kpid}上运行”
退出变量=0
其他的
echo“$CATALINA_PID已找到,但$kpid未运行”
退出变量=4
fi
取消设置kpid
其他的
回显“$0已停止”
exit_var=3#修复了厨师长未启动已停止服务的问题。
fi
;;
以撒
退出$exit_var
但这些并没有真正改变脚本的退出代码。如何为不同的案例场景设置不同的退出代码
版本信息:
- 操作系统:CentOS 6.5
- 厨师:10:20
- Tomcat:6.0.39
- 你的想法是正确的,但是你在错误的地方退出了。我已将其放置在下面,使其在已运行的状态下等于
3
:
status)
if [ -f "$CATALINA_PID" ]; then
read kpid < "$CATALINA_PID"
if ps --pid $kpid 2>&1 1>/dev/null; then
echo "$0 is already running at ${kpid}"
## Fixes issue with Chef not starting a stopped service.
exit_var=3 ## this is the condition of already running
else
echo "$CATALINA_PID found, but $kpid is not running"
exit_var=4
fi
unset kpid
else
echo "$0 is stopped"
exit_var=5 # (renumbered 5 set as you desire)
fi
;;
esac
exit $exit_var
状态)
如果[-f“$CATALINA_PID”];然后
阅读kpid<“$CATALINA\u PID”
如果ps--pid$kpid 2>&11>/dev/null;然后
echo“$0已在${kpid}上运行”
##修复了Chef未启动已停止服务的问题。
exit_var=3##这是已运行的条件
其他的
echo“$CATALINA_PID已找到,但$kpid未运行”
退出变量=4
fi
取消设置kpid
其他的
回显“$0已停止”
exit_var=5#(根据需要重新编号为5)
fi
;;
以撒
退出$exit_var
是否在此脚本中重新启动
启动
然后停止
。。。也许是一个“restop
”?
status)
if [ -f "$CATALINA_PID" ]; then
read kpid < "$CATALINA_PID"
if ps --pid $kpid 2>&1 1>/dev/null; then
echo "$0 is already running at ${kpid}"
## Fixes issue with Chef not starting a stopped service.
exit_var=3 ## this is the condition of already running
else
echo "$CATALINA_PID found, but $kpid is not running"
exit_var=4
fi
unset kpid
else
echo "$0 is stopped"
exit_var=5 # (renumbered 5 set as you desire)
fi
;;
esac
exit $exit_var