启动Java应用的Shell脚本

启动Java应用的Shell脚本,第1张

对于Java应用程序(非web应用) 在部署后 常常需要一个启动脚本来加载一些第三方的jar包 并启动应用

对于java应用程序 我一般喜欢将程序的目录结构写成如下的方式

myapp

| lib

| bin

| packages

一些配置文件和属性文件

一个startup sh 或bat启动脚本

其中 packages是程序的根包 其中有子包和class文件等

在包中 有一个Main calss的类 这个作老悄为程序的入口

下面给出一个最一般的写法

startup sh #!/bin/sh

programdir=

num=$#

temp=$CLASSPATH

#setting libs path

libs= /lib/*

append(){

temp=$temp : $

}

for file in $libsdo

append $file

done

咐含野export CLASSPATH=$temp: : /:$programdir

export LANG=zh_CN

nohup java classpath $CLASSPATH    packaages xxx yyy Main &

这样 只要按照上面的方式组织程序 启动脚本就需要改动下Main前面的包路径即可

nohup 上面脚本中最后一行前有nohup 这是将程序的输入衡喊输出都将附加到当前目录的 nohup out 文件中

lishixinzhi/Article/program/Java/hx/201311/25993

在游陪shell里面直接调用即可。

    1,编译一个java文件为a.class。

    2,编写shell脚本b

.sh

#!/bin/bash

java a.class    3,放在同一目录神则下运行shell即可。如神瞎蠢果要后台运行,bash

b.sh&

如果shell脚本和java程序运行在不同的服务器上,可以使用远程执行Linux命令执行包,使用ssh2协议连接远程服务器,掘笑并发送执行命令就行了,ganymed.ssh2相关mave配置如下,你可以自己百度搜索相关资料。

如果shell脚本和java程序在同一台服务器上,

这里不得不提到java的process类渗散掘了。

process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。

process类提供了执行从进程输入,执行输出到进程,等待进丛核程完成,检查进程的推出状态,以及shut down掉进程。

<dependency>  

  <groupId>com.ganymed.ssh2</groupId>  

  <artifactId>ganymed-ssh2-build</artifactId>  

  <version>210</version>  

 </dependency>

本地执行命令代码如下:

String shpath="/test/test.sh"   //程序路径

    Process process =null

    String command1 = “chmod 777 ” + shpath

    process = Runtime.getRuntime().exec(command1)

    process.waitFor()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12528101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存