Linux後臺運行命令有兩種方式:
- cmd & : 後臺運行,關掉終端會停止運行
- nohup cmd & : 後臺運行,關掉終端不會停止運行
方式一:cmd &
- cmd & 實現讓命令在後臺運行。但不要將有用戶交互的命令放到後臺,這樣命令會在後臺等待用戶輸入。後臺運行的命令也會將結果輸出到控制檯上,如果不需要的話,可以將其重定向到某個文件中。使用下面的命令可以將標準輸出和錯誤輸出都將被重定向到一個叫做cmd.out的文件中:
cmd > cmd.out 2>&1 &
- 執行命令成功後,會顯示一個進程號,可以用它來監控(ps -ef | grep 進程號)或者殺死(kill -9 進程號)進程。
方式二:nohup cmd &
- 使用方法一的時候,當我們關閉終端,命令就會停止運行。加上nohup可以在關閉終端後不停止命令。該命令的一般形式爲:
nohup command &
- 默認情況下,該命令的所有輸出都被重定向到nohup.out文件中。也可以使用下面的命令來指定輸出文件爲nohupcmd.out:
nohup command > nohupcmd.out 2>&1 &
- nohup只有在使用exit命令正常退出終端,才能保證命令一直在後臺運行。終端異常退出後臺命令也會停止運行。
其他相關命令:
- ctrl + z:將正在前臺執行的命令放到後臺,且讓命令處於暫停狀態。
- jobs:查看當前有多少在後臺運行的命令,-l選項可顯示所有任務的PID。
- fg:將後臺命令放回前臺運行。
- bg:將嵌套命令放到後臺運行。
fg和bg命令可以用 fg(bg) %jobid來指定執行命令,%jobid是通過jobs命令查到的後臺正在執行的命令的序號(不是pid)。