新聞中心
Java在linux上調(diào)用shell腳本
上的 Win16/DOS 進(jìn)程,或者 shell 腳本。創(chuàng)建的子進(jìn)程沒(méi)有自己的終端或控制臺(tái)。
創(chuàng)新互聯(lián)建站秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站制作、成都網(wǎng)站建設(shè),重慶小程序開(kāi)發(fā)公司,網(wǎng)頁(yè)設(shè)計(jì)制作,移動(dòng)網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。
如果shell腳本和java程序運(yùn)行在不同的服務(wù)器上,可以使用遠(yuǎn)程執(zhí)行Linux命令執(zhí)行包,使用ssh2協(xié)議連接遠(yuǎn)程服務(wù)器,并發(fā)送執(zhí)行命令就行了,ganymed.ssh2相關(guān)mave配置如下,你可以自己百度搜索相關(guān)資料。
/usr/local/a.bat 文件沒(méi)有被授予可執(zhí)行權(quán)限,導(dǎo)致無(wú)法執(zhí)行;java 未能識(shí)別sh 命令,最好調(diào)用java.lang.Runtime.exec(String cmd, String[] envp)方法,將sh 的上下文路徑設(shè)置進(jìn)去,估計(jì)就沒(méi)有問(wèn)題了。
Java調(diào)用linux的shell腳本不成功解決得分,該如何處理
/usr/local/a.bat 文件沒(méi)有被授予可執(zhí)行權(quán)限,導(dǎo)致無(wú)法執(zhí)行;java 未能識(shí)別sh 命令,最好調(diào)用java.lang.Runtime.exec(String cmd, String[] envp)方法,將sh 的上下文路徑設(shè)置進(jìn)去,估計(jì)就沒(méi)有問(wèn)題了。
SHELL_FILE_DIR:要運(yùn)行的腳本所在的目錄; 當(dāng)然你也可以把要運(yùn)行的腳本寫(xiě)成全路徑。runningStatus:運(yùn)行狀態(tài),0標(biāo)識(shí)正常。 詳細(xì)可以看java文檔。
java程序是提供了這個(gè)一方法, Process pro = Runtime.getRuntime().exec(cmds);但是一般來(lái)說(shuō),盡量去用一些其他腳本(lua,shell,python)去執(zhí)行一系列l(wèi)inux命令比較靈活, 而且耗費(fèi)資源少。
sh腳本如何自動(dòng)執(zhí)行java程序,并且該腳本如何被定期調(diào)用?
腳本還是簡(jiǎn)單:/sbin/java /.../javaproject/delete 當(dāng)然上面的需要將路徑設(shè)置正確。最好能將delete.java修改為首字母大寫(xiě)的Delete.java,然后編譯。
exportPATH=$PATH:$JAVA_HOME/bin:/root/bin:$NODE_HOME/bin:$CASPERJS_HOME/bin:$PHANTOMJS_HOME/bin 原來(lái)是因?yàn)閖ava在調(diào)用shell的時(shí)候,默認(rèn)用的是系統(tǒng)的/bin/下的指令。特別是你用root權(quán)限運(yùn)行的時(shí)候。
在寫(xiě)程序時(shí),有時(shí)需要在java程序中調(diào)用shell腳本,可以通過(guò)Runtime的exec方法來(lái)調(diào)用shell程序,運(yùn)行腳本。每個(gè)Java 應(yīng)用程序都有一個(gè)Runtime 類實(shí)例,使應(yīng)用程序能夠與其運(yùn)行的環(huán)境相連接。
如果shell腳本和java程序運(yùn)行在不同的服務(wù)器上,可以使用遠(yuǎn)程執(zhí)行Linux命令執(zhí)行包,使用ssh2協(xié)議連接遠(yuǎn)程服務(wù)器,并發(fā)送執(zhí)行命令就行了,ganymed.ssh2相關(guān)mave配置如下,你可以自己百度搜索相關(guān)資料。
如樓上所說(shuō),在腳本里的每條有持續(xù)性的命令后加&符,此條命令就會(huì)后臺(tái)執(zhí)行,然后繼續(xù)下一條。對(duì)于輸出,可以定義一個(gè)writelog函數(shù),將輸出寫(xiě)到文件里以便之后查看。
分享題目:java代碼執(zhí)行sh腳本 java執(zhí)行腳本語(yǔ)言
文章起源:http://ef60e0e.cn/article/depidgh.html