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