Java在linux上調(diào)用shell腳本?
最近剛剛結(jié)合自己的工作實(shí)踐分享了一篇Java如何調(diào)用Sh《Java配Shell等于美酒加咖啡》
在化學(xué)中,我們知道"氫加氧點(diǎn)燃后會(huì)生成水。
在我們的生活中,我們知道"當(dāng)春天的夜晚是美麗的時(shí)候,它將是珍貴的。
Isn技術(shù)上來說是這樣嗎?讓s假設(shè)一個(gè)場(chǎng)景:BOSS讓你實(shí)現(xiàn)一個(gè)服務(wù)監(jiān)控的指揮室,可以看到每臺(tái)服務(wù)器的剩余磁盤空間。。。看得見。。。
其實(shí)說實(shí)話,有很多種實(shí)現(xiàn),但不管黑貓白貓能抓到老鼠就是好貓。今天我們嘗試用一個(gè)Shell搭配Java,看看是否會(huì)產(chǎn)生令人驚訝的反應(yīng)。
1.首先,通過JDK源代碼,品嘗運(yùn)行時(shí)的美酒。
上圖是JDKRuntime的部分源代碼,主要分為四個(gè)代碼段來大致了解她。
在第一段代碼中,我們可以看到運(yùn)行時(shí)結(jié)構(gòu)被私有化,提供靜態(tài)屬性,預(yù)先創(chuàng)建對(duì)象實(shí)例,提供靜態(tài)方法獲取實(shí)例。Isn這難道不是單例設(shè)計(jì)模式的使用嗎?面試官再問設(shè)計(jì)圖案的時(shí)候,就拿過來狂噴。
第二段代碼,主要是addShutdownHook()方法,添加了一個(gè)關(guān)閉的鉤子。說白了,它實(shí)際上允許開發(fā)者插入一段代碼,這段代碼在JVM關(guān)閉時(shí)執(zhí)行。比如在構(gòu)建服務(wù)框架時(shí),在需要完成優(yōu)雅的服務(wù)停止、清理戰(zhàn)場(chǎng)、釋放資源等情況下非常有用。在Tomcat和Jetty等容器中可以看到ShutdownHook。
運(yùn)行時(shí)運(yùn)行時(shí)()
(新主題(){
@覆蓋
公共無效運(yùn)行(){
(清理戰(zhàn)場(chǎng),釋放資源,完成優(yōu)雅服務(wù))
}
})
(服務(wù)啟動(dòng)完成)
代碼運(yùn)行效果如下。
服務(wù)啟動(dòng)完成。
清理戰(zhàn)場(chǎng),釋放資源,完成優(yōu)雅服務(wù)。
第三段代碼主要展示了JDK為Runtime提供的一系列exec重載方法,是本次分享的重點(diǎn),亮點(diǎn)將在最后討論。
第四個(gè)代碼段主要是運(yùn)行時(shí)提供的一些獲取系統(tǒng)信息的API。只需拋出代碼并使用它。
運(yùn)行時(shí)運(yùn)行時(shí)()
((JVM可用的本機(jī)CPU核心%d)
Shell腳本的作用?
Shell腳本是便于管理員設(shè)置的程序文件。
Shell腳本類似于Windows/Dos下的批處理,即預(yù)先用各種命令放入文件中的程序文件,便于一次性執(zhí)行,主要是為了方便管理員設(shè)置。還是為了管理。
但它比Windows下的批處理功能更強(qiáng)大,比其他編程程序編輯的程序更高效。它使用Linux/Unix下的命令。
換句話說,外殼腳本是利用外殼的功能編寫的程序。
這個(gè)程序使用一個(gè)純文本文件,在里面寫一些shell語法和指令,然后使用正規(guī)表示、管道命令、數(shù)據(jù)流重定向等功能,達(dá)到我們想要的處理目的。
更清楚地說,Shell腳本就像。dos時(shí)代初期的bat。最簡(jiǎn)單的功能就是把很多指令組裝在一起編寫,讓用戶在一次操作中輕松執(zhí)行多個(gè)命令。
Shell腳本提供了數(shù)組、循環(huán)、條件、邏輯判斷等重要功能,使用戶可以直接在shell中編寫程序,而不需要使用C編程語言等傳統(tǒng)程序的語法。