有时候我们需要将java项目打包,运行于linux系统上,也就是桌面运行模式。 这种运行模式需要长期运行,还需要状态监控,不太可能每次运行或者重启是输入一大堆长长的的命令,在Linux/unix下,最理想的就是使用shell脚本了,如下共享一下个人所做的一个服务器的实际部署管理脚本。
如下是我 服务器目录下的文件和目录,
-rwxr-xr-x 1 root root 235 06-11 14:15 tools.sh ---查看服务器是否在运行
-rwxr-xr-x 1 root root 575 06-13 15:08 startup.sh ---服务启动脚本
-rwxr-xr-x 1 root root 266 06-12 17:25 shutdown.sh ---服务停止脚本
drwxr-xr-x 2 root root 4096 06-21 09:09 shell ---其他一些辅助的脚本存放目录
drwxr-xr-x 3 root root 4096 06-20 02:15 mysql --mysql数据清理、备份目录
drwxr-xr-x 2 root root 4096 06-20 14:54 logs --服务器运行日志目录
drwxr-xr-x 2 root root 4096 06-08 17:48 lib --引用的jar
-rw-r--r-- 1 root root 69944 06-14 15:23 GpsForServer.jar --服务jar
drwxr-xr-x 2 root root 4096 06-20 17:07 config --所有配置文件目录
展示上面的目录主要是为了理解脚本内容
startup.sh的内容
#/bin/sh
home=/root/userfile/gpsserver
classpath=$home/lib/
jarFileName=GpsForServer.jar
JAVA_OPTS="-Xmx1024m -Xms1024m -Xmn768m -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=10"
debug=false
cd $home
result=`ps -ef | grep java | grep $jarFileName | grep -v grep| awk '{print 0}'`
if [ "$debug" == "false" ];then
if [ "X" != "X"$result ]; then
echo "ERROR : another instance is running ,exit ......"
exit 1
fi
fi
nohup java $JAVA_OPTS -classpath $classpath -jar $home/$jarFileName > $home/logs/nohup.log 2>&1 &
echo "start gpsServer engin ... ..."
shutdown.sh内容
#/bin/sh
jarFileName=GpsForServer.jar
pid=`ps -ef | grep java | grep $jarFileName | grep -v grep| awk '{print $2}'`
if [ "X$pid" != "X" ]; then
kill -9 $pid
echo "killed the process ["$pid"] ......"
else
echo "the service has been stopted"
fi
如上简单的脚本就可以实现一个服务管理。
欢迎拍砖!