在 Linux,如果要同時跑多個指令,可以利用 nohup 將 process 放到背景執行
nohup /path/my_program &
預設執行結果存到 ./nohup.txt。
如果不想儲存執行結果
nohup /path/my_program >/dev/null &
也可以自訂儲存路徑
nohup /path/my_program >my_log.txt &
如果 standard error 也是輸出到畫面上,個別儲存的方式是
nohup /path/my_program >my.out 2>my.err &
合併儲存的方式是
nohup /path/my_program 2>&1 my_log.txt &
以上是 nohup 常用操作。
nohup 有個缺點是不能把背景執行切換到前景,這時就需要另一個工具:screen。
首先,啟動 process
screen
接著執行你需要的指令,例如
tail -f /var/log/kernal.log
再來把 process 切換到背景執行,所要使用的是鍵盤快速鍵操作
Ctrl + A + D
你會回到執行 screen 前的 bash 環境,這時候 process 已經切換到背景執行,可以使用 ps 指令確認。
process 切換到背景執行的好處是:可以登出,不怕斷線。
如果想要回到指令畫面,看執行結果,先找到 process ID
screen -ls
會得到類似的畫面
There is a screen on:
3449.pts-0.ip-10-44-204-199 (Detached)
1 Socket in /var/run/screen/S-ssm-user.
3449 就是 process ID
切換到前景執行的指令是
screen -r 3449
以上是 screen 常用操作。