Linux的bg和fg和jobs和nohup命令簡單介紹


我們都知道,在 Windows 上面,我們要么讓一個程序作為服務在后台一直運行,要么停止這個服務。而不能讓程序在前台后台之間切換。而 Linux 提供了 fg 和 bg 命令,讓我們輕松調度正在運行的任務。
假設你發現前台運行的一個程序需要很長的時間,但是需要干其他的事情,你就可以用 Ctrl-Z ,掛起這個程序,然后可以看到系統提示(方括號中的是作業號):

復制代碼
代碼如下:

[1]+ Stopped /root/bin/rsync.sh 


然后我們可以把程序調度到后台執行:(bg 后面的數字為作業號)

復制代碼
代碼如下:

# bg 1
[1]+ /root/bin/rsync.sh &


 jobs 命令查看正在運行的任務:#jobs

復制代碼
代碼如下:

[1]+ Running /root/bin/rsync.sh & 


如果想把它調回到前台運行,可以用 

復制代碼
代碼如下:

# fg 1
/root/bin/rsync.sh


這樣,你在控制台上就只能等待這個任務完成了。
fg、bg、jobs、&、ctrl + z都是跟系統任務有關的,雖然現在基本上不怎么需要用到這些命令,但學會了也是很實用的
一。& 最經常被用到
這個用在一個命令的最后,可以把這個命令放到后台執行
二。ctrl + z
可以將一個正在前台執行的命令放到后台,並且暫停
三。jobs
查看當前有多少在后台運行的命令
四。fg
將后台中的命令調至前台繼續運行
如果后台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后台正在執行的命令的序號(不是pid)
五。bg
將一個在后台暫停的命令,變成繼續執行
如果后台中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的后台正在執行的命令的序號(不是pid)

 

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,以此類推。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM