java - 程序怎么執(zhí)行shell中top或者ping命令
問題描述
有時(shí)會(huì)用程序執(zhí)行shell命令。 但如果我執(zhí)行類似top或者ping這樣的命令?這種命令不會(huì)直接終止,會(huì)一直在執(zhí)行。我怎么獲取他的執(zhí)行狀態(tài)以及怎么終止他呢?
問題解答
回答1:top和ping這類的命令都有終止的選項(xiàng)可以用,如ping的-c指定發(fā)送包的次數(shù),top的-bn指定輸出模式及輸出次數(shù)。
回答2:一般這種持續(xù)輸出的命令, 都已經(jīng)有個(gè)控制打印次數(shù)的參數(shù)控制, 譬如top就是 -n num來指定打印num次, 而ping 則是通過-c num來指定打印num次; 可以通過對(duì)應(yīng)的選項(xiàng), 來設(shè)置命令的執(zhí)行次數(shù), 如果命令不支持這樣的選項(xiàng)控制, 那應(yīng)該只能通過獲取該進(jìn)程的pid, 然后通過kill操作去發(fā)送終止信號(hào), 使其終止運(yùn)行
回答3:首先,top 和 ping 命令都是可以終止的:按 q 可以退出 top 命令,按 Ctrl-C 可以退出 ping
你可以用 subprocess 來啟動(dòng) shell 程序,然后通過 PIPE 向 STDIN 寫字符串,然后就可以了控制這些 shell 程序了吧。
相關(guān)文章:
1. mysql - 10g數(shù)據(jù)庫如何遷移2. php - 有關(guān)sql語句反向LIKE的處理3. 在視圖里面寫php原生標(biāo)簽不是要迫不得已的情況才寫嗎4. 獲取上次登錄ip的原理是啥?5. node.js - session怎么存到cookie,然后服務(wù)器重啟后還能獲取。數(shù)據(jù)庫不用mongodb或redis,數(shù)據(jù)庫是mysql6. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時(shí)間會(huì)消失是什么情況?7. 為什么說非對(duì)象調(diào)用成員函數(shù)fetch()8. fetch_field_direct()報(bào)錯(cuò)9. 為什么點(diǎn)擊登陸沒反應(yīng)10. mysql多表聯(lián)合查詢優(yōu)化的問題
