百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> linux下用shell脚本启动可执行.jar文件并关闭的方法
分享文章到:

linux下用shell脚本启动可执行.jar文件并关闭的方法

发布时间:01/15 来源: 浏览: 关键词:
项目需求在linux系统下用shell脚本启动并关闭可执行.jar文件,本文将实现这个需要的方案记录下来分享给大家。
话不多说,开始上代码,为了偷懒,代码只是截图了,感兴趣的朋友可以看了之后自己写,这样加深印象。



上面是小弟写的shell脚本。写的不好请见谅。

首先遇到的第一个坑

我在window下写的 然后道linux中执行,在linux死活都说俺的19行有错误,俺就不明白了,哪里有错,问了下别人,也说没错。突然有个高人问我在哪编写的,小弟回答在win下,他告诉俺执行下这个命令:

dos2unix server.sh

然后小弟就执行了,说命令不存在,小弟只好安装这个,执行了以下命令

yum install dos2unix

等他执行完了 小弟在执行dos2unix server.sh

然后在执行.server.sh start ,

他居然奇迹的可以了。

小弟问了下是什么原因。人家高人,默默地回答了句,win下的换行跟linux下不一样。小弟才疏学浅,智能默默地求助度娘了。

让我找到了这个说法:

Linux和Windows和换行符不一样。Windows下是CRLF(\r\n或0d0a),Linux下是LF(\n或0a)。在Linux 下有时会遇到从Windows过来的文本文件,这些文件带了Windows换行符,Linux下进行脚本处理时有可能会出一些莫名其妙的错误。因此需要将这些文件转换为Linux换行符。

然后人家这个高人用了别的方法。具体的链接可以看下 http://blog.chinaunix.net/uid-20726500-id-4492875.html

然后俺就欣喜若狂了,终于可以了。

然而当我执行stop方法有出现坑了。

根本没法执行,出现了如下的东东:


他居然说这个id没有找到,小弟当时无语了,难道是他没有找到要kill 的这个进程的id,有这个猜想,小弟果断执行了以下命令:


小弟,当时目瞪口呆了,这个命令执行出来是什么啊。kill命令一般是 kill -9(当然这个是强制杀死) pid啊 这个不是啊 应该是kill -9 1556,想到这 我应该获取的是1556这个pid,怎么获取呢。小弟又请出我们伟大的度娘了,搜索了一番,终于让我找到了这个命令:

netstat -anp|grep 9997|awk '{printf $7}'|cut -d/ -f1,截图如下


这个值,才是俺想要的嘛,果断改了下第7行的命令,改成了这个。小弟不才,直接用vim改的


然后wq保存,下面就是看下kill掉了吗?

然后执行 server.sh stop命令, 在控制台上输出了


看到这个,应该是kill掉了。

至此已经完成了。

那么这个获取pid命令,小弟还是不太懂 awk 是什么鬼?cut 倒是知道什么意思。

然后这时候又请出了神奇的度娘。多方打探、搜索,小弟搜到了这个

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理,具体链接请看下面的

http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

通过这个链接大体的也了解了

它上面有个这个解释

此外,$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推

小弟有个这个 awk '{printf $7}'


那么这个$7是啥意思呢,就是取到得得1556/java这个值,不信,自己属下是不是第七个。

那么既然找到了这个那怎么取1556呢,如果是在java、php、js中很容易,但是在linux下呢,那么就需要cut命令了,cut顾名思义了,我也不多解释了,

他有一个-d 是自定义分隔符的,那么就可以cut -d/

这个的意思是js中的split差不多意思

然后我再取第一个不就行了

总结起来就是 cut -d/ -f 1

就取到这个值了。



Linux下通过sh脚本执行jar文件


java类:

public class HelloWorld {  
    public static void main(String[] args) {  
        System.out.println("hello world !");  
    }  
}  

sh脚本:

#!/bin/ksh  
echo "--------helloWorld------->>"  
JAVA_HOME="/usr/jdk/jdk1.6.0_34"  
JAVA_OPTIONS=" -hotspot -Xms128m -Xmx512m "  
CLASS_PATH=.;./lib;  
java -jar helloWorld.jar  

备注:

Jar包中的MANIFEST.MF中指定运行main方法的类:
Main-Class: com.test.DeveloperSybaseTest

如果需要其他的jar包,通过下面的参数指定:
Class-Path: ./lib/jConnect2.jar
注意:Class-Path:后需要一个空格,多个jar包间需要一个空格,且一行字符不能太多,换行时需要在jar包前面加一个空格。

Jar包中的MANIFEST.MF中指定运行main方法的类:
Main-Class: com.test.DeveloperSybaseTest

如果需要其他的jar包,通过下面的参数指定:(注意:Class-Path:后需要一个空格,多个jar包间需要一个空格,且一行字符不能太多,换行时需要在jar包前面加一个空格。)
Class-Path: ./lib/jConnect2.jar


打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板