3/10更新的最全脚本[下附使用方法]
__
#!/bin/sh
JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms512m -Xmx512m -Xloggc:agent.log"
APP_LOG=/home/monitor/alert-agent/
APP_HOME=/home/monitor/alert-agent/
APP_MAIN=com.upyoo.agent.AgentServer
CLASSPATH=$APP_HOME/classes
for tradePortalJar in "$APP_HOME"/*.jar
do
CLASSPATH="$CLASSPATH":"$tradePortalJar"
done
tradePortalPID=0
getTradeProtalPID(){
javaps=`ps -ef|grep java | awk '{ if($8=="./jre/bin/java") print $2}'`
if [ -n "$javaps" ]; then
tradePortalPID=$javaps
else
tradePortalPID=0
fi
}
startup(){
getTradeProtalPID
echo "======================================================================================"
if [ $tradePortalPID -ne 0 ]; then
echo "$APP_MAIN already started(PID=$tradePortalPID)"
echo "======================================================================================"
else
echo -n "Starting $APP_MAIN"
cd /home/monitor/alert-agent
sudo ./start.sh
getTradeProtalPID
if [ $tradePortalPID -ne 0 ]; then
echo "(PID=$tradePortalPID)...[Success]"
echo "======================================================================================"
else
echo "[Failed]"
echo "======================================================================================"
fi
fi
}
shutdown(){
getTradeProtalPID
echo "======================================================================================"
if [ $tradePortalPID -ne 0 ]; then
echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."
kill -9 $tradePortalPID
if [ $? -eq 0 ]; then
echo "[Success]"
echo "======================================================================================"
else
echo "[Failed]"
echo "======================================================================================"
fi
getTradeProtalPID
if [ $tradePortalPID -ne 0 ]; then
shutdown
fi
else
echo "$APP_MAIN is not running"
echo "======================================================================================"
fi
}
getServerStatus(){
getTradeProtalPID
echo "======================================================================================"
if [ $tradePortalPID -ne 0 ]; then
echo "$APP_MAIN is running(PID=$tradePortalPID)"
echo "======================================================================================"
else
echo "$APP_MAIN is not running"
echo "======================================================================================"
fi
}
getclearlog(){
sudo rm /home/monitor/alert-agent/*.log.*
sudo cat /dev/null > /home/monitor/alert-agent/agent.log
echo "======================================================================================"
echo "rm log files[*.log.*]"
echo "clean agent.log"
echo "======================================================================================"
}
restartup(){
shutdown
startup
echo "======================================================================================"
echo "$APP_MAIN is restart successfully!(PID=$tradePortalPID)"
echo "======================================================================================"
}
if [ "$1" == "start" ]||[ "$1" == "1" ];then
startup
elif [ "$1" == "2" ];then
shutdown
elif [ "$1" == "shut" ];then
shutdown
elif [ "$1" == "3" ]||[ "$1" == "restart" ];then
restartup
elif [ "$1" == "4" ]||[ "$1" == "status" ];then
getServerStatus
elif [ "$1" == "5" ]||[ "$1" == "clear" ];then
getclearlog
else
echo "usage: type> {$0 1} or {$0 start} --> startup; "
echo " type> {$0 2} or {$0 shut} --> shutdown"
echo " type> {$0 3} or {$0 restart} --> restart"
echo " type> {$0 4} or {$0 status} --> getServerStatus"
echo " type> {$0 5} or {$0 clear} --> clean logs"
fi
[monitor@i-755-42433-VM ~]$ sudo bash commonstart.sh
usage: type> {commonstart.sh 1} or {commonstart.sh start} --> startup;
type> {commonstart.sh 2} or {commonstart.sh shut} --> shutdown
type> {commonstart.sh 3} or {commonstart.sh restart} --> restart
type> {commonstart.sh 4} or {commonstart.sh status} --> getServerStatus
type> {commonstart.sh 5} or {commonstart.sh clear} --> clean logs
________
http://blog.youkuaiyun.com/jadyer/article/details/7960802
使用awk打印符合条件包含符合条件内容的行
如下, 打印出本行中第二列, 要求此行中 第1列是root, (为了杀进程!)
ps -ef|grep java | awk '{ if($1~"root") print $2}'
停止的脚本:
背景:
因为运行
ps -ef|grep java
出现了root和monitor两种:
root 39321 1 5 16:56 pts/1 00:00:00 ./jre/bin/java -cp .:./alert-agent-0.0.1-SNAPSHOT.jar:./snmp4j-2.3.1.jar:./commons-beanutils-1.8.0.jar:./commons-collections-3.1.jar:./commons-lang-2.5.jar:./commons-logging-1.1.jar:./ezmorph-1.0.6.jar:./json-lib-2.4-jdk15.jar:./log4j-1.2.12.jar:./logkit-1.0.1.jar:./uc-common-1.0.0.jar:./ucid-1.0.0.jar:./quartz-2.2.1.jar:./quartz-jobs-2.2.1.jar:./slf4j-log4j12-1.7.7.jar:./slf4j-api-1.7.5.jar:./httpclient-4.3.6.jar:./httpmime-4.3.6.jar:./httpcore-4.3.3.jar:./commons-httpclient-3.1.jar com.upyoo.agent.AgentServer
monitor 39352 7706 0 16:56 pts/1 00:00:00 grep java
为了使用停止脚本方便, 需要知道39321和唯一确定是这个程序的区别码[经过不断测试, 确定为
./jre/bin/java
也就是
ps -ef|grep java | awk '{ if($8~"./jre/bin/java") print $2}'
通过这样的方式,便可以确定了
脚本如下:
#!/bin/sh
APP_MAIN=com.upyoo.agent.AgentServer
APP_USER=root
tradePortalPID=0
getTradeProtalPID(){
javaps=`ps -ef|grep java | awk '{ if($8~"./jre/bin/java") print $2}'`
echo $javaps
if [ -n "$javaps" ]; then
tradePortalPID=$javaps
else
tradePortalPID=0
fi
}
shutdown(){
getTradeProtalPID
echo "================================================================================================================"
if [ $tradePortalPID -ne 0 ]; then
echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."
sudo kill $tradePortalPID
if [ $? -eq 0 ]; then
echo "[Success]"
echo "================================================================================================================"
else
echo "[Failed]"
echo "================================================================================================================"
fi
getTradeProtalPID
if [ $tradePortalPID -ne 0 ]; then
shutdown
fi
else
echo "$APP_MAIN is not running"
echo "================================================================================================================"
fi
}
shutdown
这个脚本写在了程序jar同行文件夹下, 如果要写在外面, 建议再写一个专门的sh
cd alert-agent
sudo bash ./sdown.sh
注: 如果是sudo 起的, 那么肯定是root开头的, 则应该以sudo关闭
如果不是, 则直接不用sudo
===================================================================================================================================
关闭脚本改进版>sdown.sh
why update? 为什么要改进
因为在运行此脚本时, 出现了两个 问题,
一 在杀进程的时候, 出现了进程不唯一, 于是无法杀掉
[monitor@monitor-agent-nm4 ~]$ sudo bash ./alert-agent/sdown.sh
[sudo] password for monitor:
================================================================================================================
./alert-agent/sdown.sh: line 18: [: too many arguments
com.upyoo.agent.AgentServer is not running
================================================================================================================
解决过程:
[monitor@monitor-agent-nm4 ~]$ ps -ef|grep java | awk '{ if($8~"./jre/bin/java") print $2}'
13333
21228
[monitor@monitor-agent-nm4 ~]$ ps -ef|grep java
monitor 13333 13331 0 14:02 ? 00:00:15 /home/monitor/ucmp-agent/jre/bin/java -Djava.security.auth.login.config=../../bundles/agent-4.6.6/jaas.config -Xmx128m -Djava.net.preferIPv4Stack=true -Dagent.install.home=../.. -Dagent.bundle.home=../../bundles/agent-4.6.6 -Dsun.net.inetaddr.ttl=60 -Djava.library.path=%LD_LIBRARY_PATH%:../../wrapper/lib -classpath ../../bundles/agent-4.6.6/lib/hq-agent-core-4.6.6.jar:../../bundles/agent-4.6.6/lib/hq-lather-4.6.6.jar:../../bundles/agent-4.6.6/pdk/lib/activation-1.1.jar:../../bundles/agent-4.6.6/pdk/lib/ant-1.7.1.jar:../../bundles/agent-4.6.6/pdk/lib/ant-launcher-1.7.1.jar:../../bundles/agent-4.6.6/pdk/lib/antlr-2.7.6.jar:../../bundles/agent-4.6.6/pdk/lib/aopalliance-1#!/bin/sh
.0.jar:../../bundles/agent-4.6.6/pdk/lib/asm-1.5.3.jar:../../bundles/agent-4.6.6/pdk/lib/asm-attrs-1.5.3.jar:../../bundles/agent-4.6.6/pdk/lib/backport-util-concurrent-3.1.jar:../../bundles/agent-4.6.6/pdk/lib/cglib-2.1_3.jar:../../bundles/agent-4.6.6/pdk/lib/cm-file-monitor-1.0.1.jar:../../bundles/agent-4.6.6/pdk/lib/cm-versioncontrol-1.0.1.jar:../../bundles/agent-4.6.6/pdk/lib/commons-beanutils-1.7.0.jar:../../bundles/agent-4.6.6/pdk/lib/commons-codec-1.1.jar:../../bundles/agent-4.6.6/pdk/lib/commons-collections-2.1.1.jar:../../bundles/agent-4.6.6/pdk/lib/commons-collections-3.2.1.jar:../../bundles/agent-4.6.6/pdk/lib/commons-digester-1.6.jar:../../bundles/agent-4.6.6/pdk/lib/commons-lang-2.5.jar:../../bundles/agent-4.6.6/pdk/lib/commons-logging-1.0.4.jar:../../bundles/agent-4.6.6/pdk/lib/commons-validator-1.3.1.jar:../../bundles/agent-4.6.6/pdk/lib/dnsjava-2.0.6.jar:../../bundles/agent-4.6.6/pdk/lib/dom4j-1.6.1.jar:../../bundles/agent-4.6.6/pdk/lib/geronimo-j2ee-management_1.0_spec-1.1.jar:../../bundles/agent-4.6.6/pdk/lib/getopt-1.0.13.jar:../../bundles/agent-4.6.6/pdk/lib/hibernate-3.2.6.ga.jar:../../bundles/agent-4.6.6/pdk/lib/hq-common-4.6.6.jar:../../bundles/agent-4.6.6/pdk/lib/hq-pdk-4.6.6.jar:../../bundles/agent-4.6.6/pdk/lib/hq-product.jar:../../bundles/agent-4.6.6/pdk/lib/hq-util-4.6.6.jar:../../bundles/agent-4.6.6/pdk/lib/hqapi1-5.0.0-HA.jar:../../bundles/agent-4.6.6/pdk/lib/httpclient-4.1.1.jar:../../bundles/agent-4.6.6/pdk/lib/httpcore-4.1.jar:../../bundles/agent-4.6.6/pdk/lib/icu4j-3.8.jar:../../bundles/agent-4.6.6/pdk/lib/jasypt-1.6.jar:../../bundles/agent-4.6.6/pdk/lib/jaxb-api-2.1.jar:../../bundles/agent-4.6.6/pdk/lib/jaxb-impl-2.1.3.jar:../../bundles/agent-4.6.6/pdk/lib/jboss-common-logging-spi-2.0.4.GA.jar:../../bundles/agent-4.6.6/pdk/lib/jboss-remoting-2.2.2.SP8.jar:../../bundles/agent-4.6.6/pdk/lib/jcl-over-slf4j-1.6.1.jar:../../bundles/agent-4.6.6/pdk/lib/jdom-1.1.jar:../../bundles/agent-4.6.6/pdk/lib/jpathwatch-0-94.jar:../../bundles/agent-4.6.6/pdk/lib/jsch-0.1.42.jar:../../bundles/agent-4.6.6/pdk/lib/log4j-1.2.14.jar:../../bundles/agent-4.6.6/pdk/lib/org.eclipse.jgit-1.0.0.201106090707-r.jar:../../bundles/agent-4.6.6/pdk/lib/org.eclipse.jgit.junit-1.0.0.201106090707-r.jar:../../bundles/agent-4.6.6/pdk/lib/org.springframework.roo.file.monitor-1.0.2.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/org.springframework.roo.file.monitor.polling-1.0.2.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/org.springframework.roo.support-1.0.2.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/oro-2.0.8.jar:../../bundles/agent-4.6.6/pdk/lib/serializer-2.7.1.jar:../../bundles/agent-4.6.6/pdk/lib/sigar-1.6.6.jar:../../bundles/agent-4.6.6/pdk/lib/slf4j-api-1.6.1.jar:../../bundles/agent-4.6.6/pdk/lib/slf4j-log4j12-1.6.1.jar:../../bundles/agent-4.6.6/pdk/lib/snmp4j-1.11.jar:../../bundles/agent-4.6.6/pdk/lib/spring-aop-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-asm-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-beans-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-context-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-core-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-expression-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-oxm-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/spring-tx-3.0.5.RELEASE.jar:../../bundles/agent-4.6.6/pdk/lib/stax-api-1.0-2.jar:../../bundles/agent-4.6.6/
root 21228 1 19 15:21 pts/1 00:01:21 ./jre/bin/java -cp .:./alert-agent-0.0.1-SNAPSHOT.jar:./snmp4j-2.3.1.jar:./commons-beanutils-1.8.0.jar:./commons-collections-3.1.jar:./commons-lang-2.5.jar:./commons-logging-1.1.jar:./ezmorph-1.0.6.jar:./json-lib-2.4-jdk15.jar:./log4j-1.2.12.jar:./logkit-1.0.1.jar:./uc-common-1.0.0.jar:./ucid-1.0.0.jar:./quartz-2.2.1.jar:./quartz-jobs-2.2.1.jar:./slf4j-log4j12-1.7.7.jar:./slf4j-api-1.7.5.jar:./httpclient-4.3.6.jar:./httpmime-4.3.6.jar:./httpcore-4.3.3.jar:./commons-httpclient-3.1.jar com.upyoo.agent.AgentServer
monitor 22606 22165 0 15:28 pts/2 00:00:00 grep java
[monitor@monitor-agent-nm4 ~]$ ps -ef|grep java | awk '{ if($8~"./jre/bin/java") print $8}'
/home/monitor/ucmp-agent/jre/bin/java
./jre/bin/java
[monitor@monitor-agent-nm4 ~]$ ps -ef|grep java | awk '{ if($8 -eq "./jre/bin/java") print $8}'
/home/monitor/ucmp-agent/jre/bin/java
./jre/bin/java
grep
awk
[monitor@monitor-agent-nm4 ~]$ ps -ef|grep java | awk '{ if($8=="./jre/bin/java") print $8}'
./jre/bin/java
于是得出解决办法:
ps -ef|grep java | awk '{ if($8=="./jre/bin/java") print $8}'
但是随之出现了问题2
二 在执行脚本时, 出现了多次打印success的情况
[monitor@monitor-agent-nm4 ~]$ sudo bash ./alert-agent/sdown.sh
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...[Success]
================================================================================================================
================================================================================================================
Stopping com.upyoo.agent.AgentServer(PID=21228)...kill 21228: No such process
[Failed]
================================================================================================================
分析原因:
是因为在杀进程的时候, 进程不能被马上杀掉, 但是脚本又一直在扫描, 所以出现了这么蛋疼的事情
改进程序, 因为只涉及到单进程的kill, 所以去掉循环扫描过程即可
#!/bin/sh
APP_MAIN=com.upyoo.agent.AgentServer
APP_USER=root
tradePortalPID=0
getTradeProtalPID(){
javaps=`ps -ef|grep java | awk '{ if($8=="./jre/bin/java") print $2}'`
if [ -n "$javaps" ]; then
tradePortalPID=$javaps
else
tradePortalPID=0
fi
}
shutdown(){
getTradeProtalPID
echo "================================================================================================================"
if [ $tradePortalPID -ne 0 ]; then
echo -n "Stopping $APP_MAIN(PID=$tradePortalPID)..."
sudo kill $tradePortalPID
if [ $? -eq 0 ]; then
echo "[Success]"
echo "================================================================================================================"
else
echo "[Failed]"
echo "================================================================================================================"
fi
else
echo "$APP_MAIN is not running"
echo "================================================================================================================"
fi
}
shutdown