我有一个就地启动和停止脚本,需要一个在Linux服务器上提供状态的脚本。我的启动脚本如下所示,如果我可以添加一些参数/命令来获取我的应用程序状态,请告诉我。
#!/bin/ksh
java_home=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f2`
service_executable=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f3`
service_home=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f4`
service_opts=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f5`
export JAVA_HOME=$java_home
export PATH=$JAVA_HOME/bin:$PATH
echo start $service_home
cd $service_home/bin
nohup $service_executable start $service_opts
abc.properties的值低于
abc-3.7.3|/apps/java/jdk1.8.0_66|rmc|/apps/rmc/abc-3.7.3|-M-Drmc.mmc.bind.port=8770
abc-3.7.3-spii|/apps/java/jdk1.8.0_66|rmc|/apps/rmc/abc-3.7.3-spii|-M-Drmc.mmc.bind.port=8770
我想要一个可以使用端口号检查每个版本的应用程序(JVM)的scrpit并给我状态,例如abc-3.7.3"运行" / abc-3.7.3-spii" down& #34;
答案 0 :(得分:1)
快速版本将是一个脚本,它将从输入文件中提取应用程序名称和端口号(例如,读取APP + stuff + PORT),然后检查端口是否已打开(例如,在netstat中)输出grep为端口号)。 这是一个非常简短的形式:
while IFS="|=" read App _ _ _ _ Port; do
netstat -lnt | grep -qw ":$Port" && echo "$App : running" || echo "$App : down"
done < abc.properties
它够好吗?
答案 1 :(得分:0)
感谢您的回答,我尝试使用“if lsof -Pi:8080 -sTCP:LISTEN -t&gt; / dev / null;”并且它在RHEL6(4.82)上工作正常,但在RHEL5上我看到错误以下
lsof:不支持的TCP / TPI信息选择:C lsof:不支持的TCP / TPI信息选择:P lsof:不支持的TCP / TPI信息选择:: lsof:不支持的TCP / TPI信息选择:L lsof:不支持的TCP / TPI信息选择:I lsof:不支持的TCP / TPI信息选择:S lsof:不支持的TCP / TPI信息选择:T lsof:不支持的TCP / TPI信息选择:E lsof:不支持的TCP / TPI信息选择:N lsof 4.78