linux下java应用程序自启动ITeye - 千亿集团

linux下java应用程序自启动ITeye

2019年02月20日07时59分52秒 | 作者: 浩然 | 标签: 程序,发动,指令 | 浏览: 541

# END INIT INFO #该脚本为Linux下发动java程序的通用脚本。即可以作为开机自发动service脚本被调用, #也可以作为发动java程序的独立脚本来运用。 #Author: wuzhenzhong, Date: 2011/7/26 #正告!!!:该脚本stop部分运用体系kill指令来强制中止指定的java程序进程。 #在杀死进程前,未作任何条件查看。在某些状况下,如程序正在进行文件或数据库写操作, #可能会形成数据丢掉或数据不完整。假如必需求考虑到这类状况,则需求改写此脚本, #添加在履行kill指令前的一系列查看。 # #环境变量及程序履行参数 #需求依据实践环境以及Java程序称号来修正这些参数 # #JDK地点途径 JAVA_HOME="/usr/soft/jdk1.6.0_26" #履行程序发动所运用的体系用户,考虑到安全,引荐不运用root帐号 RUNNING_USER=root #Java程序地点的目录(classes的上一级目录) APP_HOME=/usr/das-task #需求发动的Java主程序(main办法类) APP_MAIN "$APP_HOME"/lib/*.jar; do CLASSPATH="$CLASSPATH":"$i" #java虚拟机发动参数 JAVA_OPTS="-ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m" # #(函数)判别程序是否已发动 #运用JDK自带的JPS指令及grep指令组合,精确查找pid #jps 加 l 参数,表明显现java的完整包途径 #运用awk,分割出pid ($1部分),及Java程序称号($2部分) # #初始化psid变量(大局) psid=0 checkpid() { javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAINCLASS` if [ -n "$javaps" ]; then psid=`echo $javaps | awk {print $1}` else psid=0 # #(函数)发动程序 #1. 首要调用checkpid函数,改写$psid大局变量 #2. 假如程序现已发动($psid不等于0),则提示程序已发动 #3. 假如程序没有被发动,则履行发动指令行 #4. 发动指令履行后,再次调用checkpid函数 #5. 假如过程4的成果可以承认程序的pid,则打印[OK],不然打印[Failed] #留意:echo -n 表明打印字符后,不换行 #留意: "nohup 某指令 /dev/null 2 amp;1 amp;" 的用法 # start() { checkpid if [ $psid -ne 0 ]; then echo "" echo "warn: $APP_MAINCLASS already started! (pid=$psid)" echo "" else echo -n "Starting $APP_MAINCLASS ..." JAVA_CMD="nohup $JAVA_HOME/bin/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS /dev/null 2 1 " su - $RUNNING_USER -c "$JAVA_CMD" checkpid if [ $psid -ne 0 ]; then echo "(pid=$psid) [OK]" else echo "[Failed]" # #(函数)中止程序 #1. 首要调用checkpid函数,改写$psid大局变量 #2. 假如程序现已发动($psid不等于0),则开端履行中止,不然,提示程序未运转 #3. 运用kill -9 pid指令进行强制杀死进程 #4. 履行kill指令行紧接这以后,立刻查看上一句指令的返回值: $? #5. 假如过程4的成果$?等于0,则打印[OK],不然打印[Failed] #6. 为了避免java程序被发动屡次,这儿添加重复查看进程,重复杀死的处理(递归调用stop)。 #留意:echo -n 表明打印字符后,不换行 #留意: 在shell编程中,"$?" 表明上一句指令或许一个函数的返回值 # stop() { checkpid if [ $psid -ne 0 ]; then echo -n "Stopping $APP_MAINCLASS ...(pid=$psid) " su - $RUNNING_USER -c "kill -9 $psid" if [ $? -eq 0 ]; then echo "[OK]" else echo "[Failed]" checkpid if [ $psid -ne 0 ]; then stop else echo "" echo "warn: $APP_MAINCLASS is not running" echo "" # #(函数)查看程序运转状况 #1. 首要调用checkpid函数,改写$psid大局变量 #2. 假如程序现已发动($psid不等于0),则提示正在运转并表明出pid #3. 不然,提示程序未运转 # status() { checkpid if [ $psid -ne 0 ]; then echo "$APP_MAINCLASS is running! (pid=$psid)" else echo "$APP_MAINCLASS is not running" # #(函数)打印体系环境参数 # 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_MAIN " echo "****************************" # #读取脚本的第一个参数($1),进行判别 #参数取值规模:{start|stop|restart|status|info} #如参数不在指定规模之内,则打印协助信息 # case "$1" in start) start stop) stop restart) stop start status) status info) info echo "Usage: $0 {start|stop|restart|status|info}" exit 1 exit 0

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3

    linuxso库的深化了解ITeye

    程序,途径,运转
  • 4
  • 5

    Linux操作笔记千亿集团

    目录,文件,体系
  • 6

    squid更新缓存csdn

    服务器,地址
  • 7

    几个有用的开源镜像环球

    体系,探究,总结
  • 8
  • 9

    用户指令alibaba

    用户,指令,修正
  • 10

    两台linux文件复制环球

    文件,运用,地址