{"id":1444,"date":"2018-08-11T13:07:16","date_gmt":"2018-08-11T05:07:16","guid":{"rendered":"https:\/\/www.xiaobo.li\/?p=1444"},"modified":"2018-08-11T13:08:16","modified_gmt":"2018-08-11T05:08:16","slug":"linux-shell%e5%90%af%e5%8a%a8java-main%e5%87%bd%e6%95%b0%e8%84%9a%e6%9c%ac","status":"publish","type":"post","link":"https:\/\/www.xiaobo.li\/notes\/archives\/1444","title":{"rendered":"Linux shell\u542f\u52a8Java Main\u51fd\u6570\u811a\u672c"},"content":{"rendered":"<p>\u6765\u6e90\uff1ahttps:\/\/blog.csdn.net\/com15169113041\/article\/details\/78191849<\/p>\n<p>&nbsp;<\/p>\n<p>#!\/bin\/sh<br \/>\n#<br \/>\n#\u8be5\u811a\u672c\u4e3aLinux\u4e0b\u542f\u52a8java\u7a0b\u5e8f\u7684\u901a\u7528\u811a\u672c\u3002\u5373\u53ef\u4ee5\u4f5c\u4e3a\u5f00\u673a\u81ea\u542f\u52a8service\u811a\u672c\u88ab\u8c03\u7528\uff0c<br \/>\n#\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u542f\u52a8java\u7a0b\u5e8f\u7684\u72ec\u7acb\u811a\u672c\u6765\u4f7f\u7528\u3002<br \/>\n#<br \/>\n#Author: tudaxia.com, Date: 2011\/6\/7<br \/>\n#<br \/>\n#\u8b66\u544a!!!\uff1a\u8be5\u811a\u672cstop\u90e8\u5206\u4f7f\u7528\u7cfb\u7edfkill\u547d\u4ee4\u6765\u5f3a\u5236\u7ec8\u6b62\u6307\u5b9a\u7684java\u7a0b\u5e8f\u8fdb\u7a0b\u3002<br \/>\n#\u5728\u6740\u6b7b\u8fdb\u7a0b\u524d\uff0c\u672a\u4f5c\u4efb\u4f55\u6761\u4ef6\u68c0\u67e5\u3002\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u5982\u7a0b\u5e8f\u6b63\u5728\u8fdb\u884c\u6587\u4ef6\u6216\u6570\u636e\u5e93\u5199\u64cd\u4f5c\uff0c<br \/>\n#\u53ef\u80fd\u4f1a\u9020\u6210\u6570\u636e\u4e22\u5931\u6216\u6570\u636e\u4e0d\u5b8c\u6574\u3002\u5982\u679c\u5fc5\u987b\u8981\u8003\u8651\u5230\u8fd9\u7c7b\u60c5\u51b5\uff0c\u5219\u9700\u8981\u6539\u5199\u6b64\u811a\u672c\uff0c<br \/>\n#\u589e\u52a0\u5728\u6267\u884ckill\u547d\u4ee4\u524d\u7684\u4e00\u7cfb\u5217\u68c0\u67e5\u3002<br \/>\n#<br \/>\n###################################<br \/>\n# \u4ee5\u4e0b\u8fd9\u4e9b\u6ce8\u91ca\u8bbe\u7f6e\u53ef\u4ee5\u88abchkconfig\u547d\u4ee4\u8bfb\u53d6<br \/>\n# chkconfig: - 99 50<br \/>\n# description: Java\u7a0b\u5e8f\u542f\u52a8\u811a\u672c<br \/>\n# processname: test<br \/>\n# config: \u5982\u679c\u9700\u8981\u7684\u8bdd\uff0c\u53ef\u4ee5\u914d\u7f6e<br \/>\n###################################<br \/>\n#<br \/>\n###################################<br \/>\n#\u73af\u5883\u53d8\u91cf\u53ca\u7a0b\u5e8f\u6267\u884c\u53c2\u6570<br \/>\n#\u9700\u8981\u6839\u636e\u5b9e\u9645\u73af\u5883\u4ee5\u53caJava\u7a0b\u5e8f\u540d\u79f0\u6765\u4fee\u6539\u8fd9\u4e9b\u53c2\u6570<br \/>\n###################################<br \/>\n#JDK\u6240\u5728\u8def\u5f84<br \/>\nJAVA_HOME=\"\/usr\/java\/jdk1.8.0_102\"<br \/>\n#\u6267\u884c\u7a0b\u5e8f\u542f\u52a8\u6240\u4f7f\u7528\u7684\u7cfb\u7edf\u7528\u6237\uff0c\u8003\u8651\u5230\u5b89\u5168\uff0c\u63a8\u8350\u4e0d\u4f7f\u7528root\u5e10\u53f7<br \/>\n#RUNNING_USER=portal<br \/>\n#Java\u7a0b\u5e8f\u6240\u5728\u7684\u76ee\u5f55\uff08classes\u7684\u4e0a\u4e00\u7ea7\u76ee\u5f55\uff09<br \/>\nAPP_HOME=\/opt\/tmp\/geecuser\/geec_calculate<br \/>\n#\u9700\u8981\u542f\u52a8\u7684Java\u4e3b\u7a0b\u5e8f\uff08main\u65b9\u6cd5\u7c7b\uff09<br \/>\nAPP_MAINCLASS=com.ai.core.start.Main<br \/>\n#\u62fc\u51d1\u5b8c\u6574\u7684classpath\u53c2\u6570\uff0c\u5305\u62ec\u6307\u5b9alib\u76ee\u5f55\u4e0b\u6240\u6709\u7684jar<br \/>\nCLASSPATH=$APP_HOME\/classes<br \/>\nfor i in \"$APP_HOME\"\/lib\/*.jar; do<br \/>\nCLASSPATH=\"$CLASSPATH\":\"$i\"<br \/>\ndone<\/p>\n<p>#java\u865a\u62df\u673a\u542f\u52a8\u53c2\u6570<br \/>\nJAVA_OPTS=\"-ms1024m -mx1024m -Xmn512m -Djava.awt.headless=true -XX:MaxPermSize=256m\"<\/p>\n<p>###################################<br \/>\n#(\u51fd\u6570)\u5224\u65ad\u7a0b\u5e8f\u662f\u5426\u5df2\u542f\u52a8<br \/>\n#<br \/>\n#\u8bf4\u660e\uff1a<br \/>\n#\u4f7f\u7528JDK\u81ea\u5e26\u7684JPS\u547d\u4ee4\u53cagrep\u547d\u4ee4\u7ec4\u5408\uff0c\u51c6\u786e\u67e5\u627epid<br \/>\n#jps \u52a0 l \u53c2\u6570\uff0c\u8868\u793a\u663e\u793ajava\u7684\u5b8c\u6574\u5305\u8def\u5f84<br \/>\n#\u4f7f\u7528awk\uff0c\u5206\u5272\u51fapid ($1\u90e8\u5206)\uff0c\u53caJava\u7a0b\u5e8f\u540d\u79f0($2\u90e8\u5206)<br \/>\n###################################<br \/>\n#\u521d\u59cb\u5316psid\u53d8\u91cf\uff08\u5168\u5c40\uff09<br \/>\npsid=0<\/p>\n<p>checkpid() {<br \/>\njavaps=`$JAVA_HOME\/bin\/jps -l | grep $APP_MAINCLASS`<\/p>\n<p>if [ -n \"$javaps\" ]; then<br \/>\npsid=`echo $javaps | awk '{print $1}'`<br \/>\nelse<br \/>\npsid=0<br \/>\nfi<br \/>\n}<\/p>\n<p>###################################<br \/>\n#(\u51fd\u6570)\u542f\u52a8\u7a0b\u5e8f<br \/>\n#<br \/>\n#\u8bf4\u660e\uff1a<br \/>\n#1. \u9996\u5148\u8c03\u7528checkpid\u51fd\u6570\uff0c\u5237\u65b0$psid\u5168\u5c40\u53d8\u91cf<br \/>\n#2. \u5982\u679c\u7a0b\u5e8f\u5df2\u7ecf\u542f\u52a8\uff08$psid\u4e0d\u7b49\u4e8e0\uff09\uff0c\u5219\u63d0\u793a\u7a0b\u5e8f\u5df2\u542f\u52a8<br \/>\n#3. \u5982\u679c\u7a0b\u5e8f\u6ca1\u6709\u88ab\u542f\u52a8\uff0c\u5219\u6267\u884c\u542f\u52a8\u547d\u4ee4\u884c<br \/>\n#4. \u542f\u52a8\u547d\u4ee4\u6267\u884c\u540e\uff0c\u518d\u6b21\u8c03\u7528checkpid\u51fd\u6570<br \/>\n#5. \u5982\u679c\u6b65\u9aa44\u7684\u7ed3\u679c\u80fd\u591f\u786e\u8ba4\u7a0b\u5e8f\u7684pid,\u5219\u6253\u5370[OK]\uff0c\u5426\u5219\u6253\u5370[Failed]<br \/>\n#\u6ce8\u610f\uff1aecho -n \u8868\u793a\u6253\u5370\u5b57\u7b26\u540e\uff0c\u4e0d\u6362\u884c<br \/>\n#\u6ce8\u610f: \"nohup \u67d0\u547d\u4ee4 &gt;\/dev\/null 2&gt;&amp;1 &amp;\" \u7684\u7528\u6cd5<br \/>\n###################################<br \/>\nstart() {<br \/>\ncheckpid<\/p>\n<p>if [ $psid -ne 0 ]; then<br \/>\necho \"================================\"<br \/>\necho \"warn: $APP_MAINCLASS already started! (pid=$psid)\"<br \/>\necho \"================================\"<br \/>\nelse<br \/>\necho -n \"Starting $APP_MAINCLASS ...\"<br \/>\nJAVA_CMD=\"nohup $JAVA_HOME\/bin\/java $JAVA_OPTS -classpath $CLASSPATH $APP_MAINCLASS &gt;$APP_HOME\/log\/nohup 2&gt;&amp;1 &amp;\"<br \/>\neval $JAVA_CMD<br \/>\ncheckpid<br \/>\nif [ $psid -ne 0 ]; then<br \/>\necho \"(pid=$psid) [OK]\"<br \/>\nelse<br \/>\necho \"[Failed]\"<br \/>\nfi<br \/>\nfi<br \/>\n}<\/p>\n<p>###################################<br \/>\n#(\u51fd\u6570)\u505c\u6b62\u7a0b\u5e8f<br \/>\n#<br \/>\n#\u8bf4\u660e\uff1a<br \/>\n#1. \u9996\u5148\u8c03\u7528checkpid\u51fd\u6570\uff0c\u5237\u65b0$psid\u5168\u5c40\u53d8\u91cf<br \/>\n#2. \u5982\u679c\u7a0b\u5e8f\u5df2\u7ecf\u542f\u52a8\uff08$psid\u4e0d\u7b49\u4e8e0\uff09\uff0c\u5219\u5f00\u59cb\u6267\u884c\u505c\u6b62\uff0c\u5426\u5219\uff0c\u63d0\u793a\u7a0b\u5e8f\u672a\u8fd0\u884c<br \/>\n#3. \u4f7f\u7528kill -9 pid\u547d\u4ee4\u8fdb\u884c\u5f3a\u5236\u6740\u6b7b\u8fdb\u7a0b<br \/>\n#4. \u6267\u884ckill\u547d\u4ee4\u884c\u7d27\u63a5\u5176\u540e\uff0c\u9a6c\u4e0a\u67e5\u770b\u4e0a\u4e00\u53e5\u547d\u4ee4\u7684\u8fd4\u56de\u503c: $?<br \/>\n#5. \u5982\u679c\u6b65\u9aa44\u7684\u7ed3\u679c$?\u7b49\u4e8e0,\u5219\u6253\u5370[OK]\uff0c\u5426\u5219\u6253\u5370[Failed]<br \/>\n#6. \u4e3a\u4e86\u9632\u6b62java\u7a0b\u5e8f\u88ab\u542f\u52a8\u591a\u6b21\uff0c\u8fd9\u91cc\u589e\u52a0\u53cd\u590d\u68c0\u67e5\u8fdb\u7a0b\uff0c\u53cd\u590d\u6740\u6b7b\u7684\u5904\u7406\uff08\u9012\u5f52\u8c03\u7528stop\uff09\u3002<br \/>\n#\u6ce8\u610f\uff1aecho -n \u8868\u793a\u6253\u5370\u5b57\u7b26\u540e\uff0c\u4e0d\u6362\u884c<br \/>\n#\u6ce8\u610f: \u5728shell\u7f16\u7a0b\u4e2d\uff0c\"$?\" \u8868\u793a\u4e0a\u4e00\u53e5\u547d\u4ee4\u6216\u8005\u4e00\u4e2a\u51fd\u6570\u7684\u8fd4\u56de\u503c<br \/>\n###################################<br \/>\nstop() {<br \/>\ncheckpid<\/p>\n<p>if [ $psid -ne 0 ]; then<br \/>\necho -n \"Stopping $APP_MAINCLASS ...(pid=$psid) \"<br \/>\nkill -9 $psid<br \/>\nif [ $? -eq 0 ]; then<br \/>\necho \"[OK]\"<br \/>\nelse<br \/>\necho \"[Failed]\"<br \/>\nfi<\/p>\n<p>checkpid<br \/>\nif [ $psid -ne 0 ]; then<br \/>\nstop<br \/>\nfi<br \/>\nelse<br \/>\necho \"================================\"<br \/>\necho \"warn: $APP_MAINCLASS is not running\"<br \/>\necho \"================================\"<br \/>\nfi<br \/>\n}<\/p>\n<p>###################################<br \/>\n#(\u51fd\u6570)\u68c0\u67e5\u7a0b\u5e8f\u8fd0\u884c\u72b6\u6001<br \/>\n#<br \/>\n#\u8bf4\u660e\uff1a<br \/>\n#1. \u9996\u5148\u8c03\u7528checkpid\u51fd\u6570\uff0c\u5237\u65b0$psid\u5168\u5c40\u53d8\u91cf<br \/>\n#2. \u5982\u679c\u7a0b\u5e8f\u5df2\u7ecf\u542f\u52a8\uff08$psid\u4e0d\u7b49\u4e8e0\uff09\uff0c\u5219\u63d0\u793a\u6b63\u5728\u8fd0\u884c\u5e76\u8868\u793a\u51fapid<br \/>\n#3. \u5426\u5219\uff0c\u63d0\u793a\u7a0b\u5e8f\u672a\u8fd0\u884c<br \/>\n###################################<br \/>\nstatus() {<br \/>\ncheckpid<\/p>\n<p>if [ $psid -ne 0 ]; then<br \/>\necho \"$APP_MAINCLASS is running! (pid=$psid)\"<br \/>\nelse<br \/>\necho \"$APP_MAINCLASS is not running\"<br \/>\nfi<br \/>\n}<\/p>\n<p>###################################<br \/>\n#(\u51fd\u6570)\u6253\u5370\u7cfb\u7edf\u73af\u5883\u53c2\u6570<br \/>\n###################################<br \/>\ninfo() {<br \/>\necho \"System Information:\"<br \/>\necho \"****************************\"<br \/>\necho `head -n 1 \/etc\/issue`<br \/>\necho `uname -a`<br \/>\necho<br \/>\necho \"JAVA_HOME=$JAVA_HOME\"<br \/>\necho `$JAVA_HOME\/bin\/java -version`<br \/>\necho<br \/>\necho \"APP_HOME=$APP_HOME\"<br \/>\necho \"APP_MAINCLASS=$APP_MAINCLASS\"<br \/>\necho \"****************************\"<br \/>\n}<\/p>\n<p>###################################<br \/>\n#\u8bfb\u53d6\u811a\u672c\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570($1)\uff0c\u8fdb\u884c\u5224\u65ad<br \/>\n#\u53c2\u6570\u53d6\u503c\u8303\u56f4\uff1a{start|stop|restart|status|info}<br \/>\n#\u5982\u53c2\u6570\u4e0d\u5728\u6307\u5b9a\u8303\u56f4\u4e4b\u5185\uff0c\u5219\u6253\u5370\u5e2e\u52a9\u4fe1\u606f<br \/>\n###################################<br \/>\ncase \"$1\" in<br \/>\n'start')<br \/>\nstart<br \/>\n;;<br \/>\n'stop')<br \/>\nstop<br \/>\n;;<br \/>\n'restart')<br \/>\nstop<br \/>\nstart<br \/>\n;;<br \/>\n'status')<br \/>\nstatus<br \/>\n;;<br \/>\n'info')<br \/>\ninfo<br \/>\n;;<br \/>\n*)<br \/>\necho \"Usage: $0 {start|stop|restart|status|info}\"<br \/>\nexit 1<br \/>\nesac<br \/>\nexit 0<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6765\u6e90\uff1ahttps:\/\/blog.csdn.net\/com15169113041\/ &hellip; <a href=\"https:\/\/www.xiaobo.li\/notes\/archives\/1444\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[287],"tags":[],"class_list":["post-1444","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/1444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/comments?post=1444"}],"version-history":[{"count":0,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/posts\/1444\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/media?parent=1444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/categories?post=1444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiaobo.li\/notes\/wp-json\/wp\/v2\/tags?post=1444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}