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

最近公司遷移服務器,從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文件就行了

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章