使用shell脚本启动java后台线程
2016-11-01 14:23
459 查看
启动脚本如下(文件名称run.sh)
#!/bin/sh
#===============此处的APP_MAINCLASS 是main 方法所在类
APP_MAINCLASS=com.iflytek.sgy.sjxj.node.main.NodeStartup
JMS_OPTS="-Xms256m -Xmx1024m"
#==============此处的debug_opts 是设置java 远程调试(remote java application)
DUBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6005"
#===================================================
APP_HOME=`dirname $0`
CLASSPATH=$APP_HOME/
psid=0
#===================================================
checkpid2(){
javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`
if [ -n "$javaps" ]; then
psid=`echo $javaps | awk '{print $1}'`
else
psid=0
fi
}
checkpid(){
if [ ! -f "$APP_HOME/server.pid" ]; then
psid=0
else
psid=`cat $APP_HOME/server.pid`
javaps=`ps -p $psid | grep java`
if [ -z "$javaps" ]; then
psid=0
rm -rf $APP_HOME/server.pid
fi
fi
}
start() {
checkpid
if [ $psid -ne 0 ]; then
echo "================================"
echo "warn: $APP_MAINCLASS already started! (pid=$psid)"
echo "================================"
else
echo -n "Starting $APP_MAINCLASS ..."
if [ ! -d "$APP_HOME/../log/" ]; then
mkdir "$APP_HOME/../log/"
fi
cd $APP_HOME
#nohup java -classpath .:../lib/*:../resources $JMS_OPTS $DUBUG_OPTS $APP_MAINCLASS >> $APP_HOME/../log/server.log 2>&1 &
nohup java -classpath .:../lib/*:../resources $JMS_OPTS $DUBUG_OPTS $APP_MAINCLASS $@>/dev/null 2>&1 &
echo $! > $APP_HOME/server.pid
checkpid
if [ $psid -ne 0 ]; then
echo "(pid=$psid) [OK]"
else
echo "[Failed]"
fi
fi
}
stop() {
checkpid
if [ $psid -ne 0 ]; then
echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "
su - $RUNNING_USER -c "kill -9 $psid"
rm -rf $APP_HOME/server.pid
if [ $? -eq 0 ]; then
echo "[OK]"
else
echo "[Failed]"
fi
checkpid
if [ $psid -ne 0 ]; then
stop
fi
else
echo "================================"
echo "warn: $APP_MAINCLASS is not running"
echo "================================"
fi
}
status() {
checkpid
if [ $psid -ne 0 ]; then
echo "$APP_MAINCLASS is running! (pid=$psid)"
else
echo "$APP_MAINCLASS is not running"
fi
}
info() {
echo "System Information:"
echo "****************************"
echo `head -n 1 /etc/issue`
echo `uname -a`
echo
echo "JAVA_HOME=$JAVA_HOME"
echo `$JAVA_HOME/bin/java -version`
echo
echo "APP_HOME=$APP_HOME"
echo "APP_MAINCLASS=$APP_MAINCLASS"
echo "****************************"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
info)
info
;;
*)
echo "Usage: $0 {start|stop|restart|status|info}"
exit 1
esac
exit 0
#!/bin/sh
#===============此处的APP_MAINCLASS 是main 方法所在类
APP_MAINCLASS=com.iflytek.sgy.sjxj.node.main.NodeStartup
JMS_OPTS="-Xms256m -Xmx1024m"
#==============此处的debug_opts 是设置java 远程调试(remote java application)
DUBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6005"
#===================================================
APP_HOME=`dirname $0`
CLASSPATH=$APP_HOME/
psid=0
#===================================================
checkpid2(){
javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS`
if [ -n "$javaps" ]; then
psid=`echo $javaps | awk '{print $1}'`
else
psid=0
fi
}
checkpid(){
if [ ! -f "$APP_HOME/server.pid" ]; then
psid=0
else
psid=`cat $APP_HOME/server.pid`
javaps=`ps -p $psid | grep java`
if [ -z "$javaps" ]; then
psid=0
rm -rf $APP_HOME/server.pid
fi
fi
}
start() {
checkpid
if [ $psid -ne 0 ]; then
echo "================================"
echo "warn: $APP_MAINCLASS already started! (pid=$psid)"
echo "================================"
else
echo -n "Starting $APP_MAINCLASS ..."
if [ ! -d "$APP_HOME/../log/" ]; then
mkdir "$APP_HOME/../log/"
fi
cd $APP_HOME
#nohup java -classpath .:../lib/*:../resources $JMS_OPTS $DUBUG_OPTS $APP_MAINCLASS >> $APP_HOME/../log/server.log 2>&1 &
nohup java -classpath .:../lib/*:../resources $JMS_OPTS $DUBUG_OPTS $APP_MAINCLASS $@>/dev/null 2>&1 &
echo $! > $APP_HOME/server.pid
checkpid
if [ $psid -ne 0 ]; then
echo "(pid=$psid) [OK]"
else
echo "[Failed]"
fi
fi
}
stop() {
checkpid
if [ $psid -ne 0 ]; then
echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) "
su - $RUNNING_USER -c "kill -9 $psid"
rm -rf $APP_HOME/server.pid
if [ $? -eq 0 ]; then
echo "[OK]"
else
echo "[Failed]"
fi
checkpid
if [ $psid -ne 0 ]; then
stop
fi
else
echo "================================"
echo "warn: $APP_MAINCLASS is not running"
echo "================================"
fi
}
status() {
checkpid
if [ $psid -ne 0 ]; then
echo "$APP_MAINCLASS is running! (pid=$psid)"
else
echo "$APP_MAINCLASS is not running"
fi
}
info() {
echo "System Information:"
echo "****************************"
echo `head -n 1 /etc/issue`
echo `uname -a`
echo
echo "JAVA_HOME=$JAVA_HOME"
echo `$JAVA_HOME/bin/java -version`
echo
echo "APP_HOME=$APP_HOME"
echo "APP_MAINCLASS=$APP_MAINCLASS"
echo "****************************"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
info)
info
;;
*)
echo "Usage: $0 {start|stop|restart|status|info}"
exit 1
esac
exit 0
相关文章推荐
- Linux中使用Shell脚本查看Java线程的CPU使用情况
- Linux中使用Shell脚本查看Java线程的CPU使用情况
- hbase0.96.x开机启动的后台服务脚本(请结合上一篇,修改一下文件和目录名,即可直接复制使用)
- 启动Java应用的Shell脚本
- JavaWeb 项目启动时,后台开启一个线程的方法
- 使用交互式shell脚本实现对DNS服务的管理以及启动
- 在启动脚本中一般使用类似如下的命令执行一个Java程序
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程。
- 如何启动Java应用的Shell脚本
- Java:使用匿名内部类在方法内部定义并启动线程
- 让Java程序作为linux的Daemon后台运行 和 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- java并发--Daemon后台线程的使用
- 在启动脚本中一般使用类似如下的命令执行一个Java程序
- Shell 脚本启动java程序
- Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行
- 使用java和shell脚本支持GUI模式/CLI模式切换
- Java后台执行Shell脚本, Java方法不用等待Shell程序执行完成并保证关掉Java程序Shell脚本正常运行
- 使用bat命令或shell脚本调用java程序