当前位置: 首页 > 工具软件 > Batsh > 使用案例 >

bat文件改成sh文件在linux上运行java程序

况唯
2023-12-01

最近公司迁移服务器,从windows系统改为linux系统,里面有一些老程序是直接用bat文件启动的。

在linux中需要启动.sh文件才行,所以需要将bat文件改成sh文件才行

先粘出bat文件和sh文件,里面需要的jar包比较多我就删了一部分jar包

bat:

@echo offs

set lib=E:\newSpace\androidBass\lib
set CLASSPATH=.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
set CLASSPATH=%CLASSPATH%;%lib%\activation-1.1.jar;%lib%\ant.jars-dbutils-1.1.jar
							
java main.DataMain
pause

sh:(因为新服务器系统jdk不是6,所以要给老工程指定一下JAVA_HOME)

#!/bin/sh

export JAVA_HOME=/Mobilebass/jdk6
export lib=/Mobilebass/SSJFDataSync/lib
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export CLASSPATH=$CLASSPATH:$lib/activation-1.1.jar:$lib/ant.jar:$lib/commons-codec-1.3.jar:$lib/commons-collections-3.1.jar
							
java main.DataMain

相同点:都是要设置一下CLASSPATH,里面把要引用的jar包全都引用进来

不同点:1.bat设置变量是用‘set’,而sh文件用‘export’;

2.bat的路径符号是'\',而bat是‘/’

3.bat文件分隔符是‘;’而sh是‘:’;

4.bat变量引用这么写 ‘%变量%’,而sh是 ‘$变量’

5.记得把文件名由.bat改为.sh

总得来说就这么多需要修改的东西,不过实际启动时还会有一些其他问题

问题一:报错找不到要启动的方法类

我遇到的这种问题一般是因为编码问题,windows和linux编码不同,直接修改并改名拷贝过来的文件由于编码不对无法运行

解决方法:把文件编码改成unix编码

先vim这个sh文件,敲 冒号 ,然后写这个

set ff=unix

然后 wq!保存退出即可

问题二:如何在后台运行并保存运行日志

1.在linux直接用 sh xx.sh 启动程序,只是在前台启动了程序,可以正常开到运行日志,但是这样就被限定在程序中无法再进行其他操作了,而且一旦ssh连接断开,程序运行也就停止了。这样就得让它在后台挂起运行,使前台还可以进行其他操作。

这就需要 nohup和&命令了

nohup是挂起的意思,就是启动后你还可以进行其他操作,但关闭ssh连接好像还是会停止程序

&是后台运行,一般需要俩一起配合使用

nohup sh xx.sh &

这样就可以正常后台运行了,ssh断开也没事了,不过前台运行按个 ctrl+c就停了,后台运行就只能直接杀进程才能停止了

我一般就用 ps -anp|grep 9000 查一下端口的进程,然后直接 kill 进程号

2.后台虽然启动了,在windows起码还有个小黑框可以看报错日志,linux上就没有显示日志的地方了,这样就得将程序在启动的时候将日志打印到一个文件中。

nohup sh xx.sh >> log.log &

这样就可以将日志打进 同目录 的log.log文件中,文件路径和文件名自己设置,文件没有的话它会自己创建,完了看报错信息的话直接看这个log文件就行了

 

 

 

 类似资料: