linux批處理文件*.sh的執行往往需要在連接客戶端上執行(企業使用雲服務器居多)。然而,當腳本文件執行時間過長或操作員當前並不關心命令立即生效的情況下,一直開着連接客戶端占用一個窗口,並不是很合適。於是,就可以使用本文提到的方法進行處理:將腳本以后台進程方式運行。
一、直奔主題
(1)需要linux命令以后台進程方式執行的方法很簡單,只需要在執行命令之后加上一個&即可。例如:
#獲取當前進程狀況,並將結果輸出到a.txt
ps -ef > a.txt
#以后台方式執行命令
ps -ef > a.txt &
(2)如果還有日志輸出的需求,那么可以添加使用nohup命令。例如:
nohup ps -ef > a.txt &
這個命令將執行任務的所有控制台輸出記錄至當前目錄下nohup.out文件中。若該文件不可寫,則會寫到~/nohup.out中。
二、進程管理
命令開始執行之后,如何停止和查看命令執行情況就成了問題。linux為使用者提供了如下幾個命令用於查詢進程狀態:
job -l
查看當前用戶后台執行進程
ps -aux(ps -ef,mac上的ps命令沒有x選項)
查看服務器上所有進程
備注:
awk可以提取輸出行信息,例如:
ps -aux| grep -v grep | awk '{print $2}'就可以提取所有進程的進程號(ps第二個參數是進程號)
lsof -i :port
查詢占用端口為port的進程
netstat -ano
查看所有端口占用詳情(包含進程id)
參見博客:
https://www.cnblogs.com/baby123/p/6477429.html
