Linux 命令放入後臺的方法有兩種,分別介紹如下
第一種把命令放入後臺的方法是在命令後面加入 空格 &
。使用這種方法放入後臺的命令,在後臺處於執行狀態。
注意,放入後臺執行的命令不能與前臺有交互,否則這個命令是不能在後臺執行的。例如:
[root@localhost ~]#find / -name install.log &
[1] 1920
#[工作號] 進程號
#把find命令放入後臺執行,每個後臺命令會被分配一個工作號。命令既然可以執行,就會有進程產生,所以也會有進程號
這樣,雖然 find 命令在執行,但在當前終端仍然可以執行其他操作。如果在終端上出現如下信息:
[1]+ Done find / -name install.log
則證明後臺的這個命令已經完成了。當然,命令如果有執行結果,則也會顯示到操作終端上。其中,[1] 是這個命令的工作號,"+"代表這個命令是最近一個被放入後臺的。
命令執行過裎中按 Ctrl+Z 快捷鍵,命令在後臺處於暫停狀態,使用這種方法放入後臺的命令,就算不和前臺有交互,能在後臺執行,也處於暫停狀態,因爲 Ctrl+Z 快捷鍵就是暫停的快捷鍵。
【例 1】
[root@localhost ~]#top
#在top命令執行的過程中,按下Ctrl+Z快捷鍵
[1]+ Stopped top
#top命令被放入後臺,工作號是1,狀態是暫停。而且,雖然top命令沒有結束,但也能取得控制檯權限
【例 2】
[root@localhost ~]# tar -zcf etc.tar.gz /etc
#壓縮一下/etc/目錄
tar:從成員名中刪除開頭的"/"
tar:從硬鏈接目標中刪除開頭的"/"
^Z
#在執行過程中,按下Ctrl+Z快捷鍵
[2]+ Stopped tar-zcf etc.tar.gz/etc
#tar命令被放入後臺,工作號是2,狀態是暫停
每個被放入後臺的命令都會被分配一個工作號。第一個被放入後臺的命令,工作號是 1;第二個被放入後臺的命令,工作號是 2,以此類推。
jobs 命令
jobs 命令可以用來查看當前終端放入後臺的工作,工作管理的名字也來源於 jobs 命令。jobs 命令的基本格式如下:
[root@localhost ~]#jobs [選項]
表 1 羅列了 jobs 命令常用的選項及含義。
選項 | 含義 |
---|---|
-l(L 的小寫) | 列出進程的 PID 號。 |
-n | 只列出上次發出通知後改變了狀態的進程。 |
-p | 只列出進程的 PID 號。 |
-r | 只列出運行中的進程。 |
-s | 只列出已停止的進程。 |
例如:
[root@localhost ~]#jobs -l
[1]- 2023 Stopped top
[2]+ 2034 Stopped tar -zcf etc.tar.gz /etc
可以看到,當前終端有兩個後臺工作:一個是 top 命令,工作號爲 1,狀態是暫停,標誌是"-";另一個是 tar 命令,工作號爲 2,狀態是暫停,標誌是"+"。"+"號代表最近一個放入後臺的工作,也是工作恢復時默認恢復的工作。"-"號代表倒數第二個放入後臺的工作,而第三個以後的工作就沒有"+-"標誌了。
一旦當前的默認工作處理完成,則帶減號的工作就會自動成爲新的默認工作,換句話說,不管此時有多少正在運行的工作,任何時間都會有且僅有一個帶加號的工作和一個帶減號的工作。