歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

RHEL6系統進程管理之任務管理

1、先來簡單的來理解一下程序與進程的相關概念
程序:供用戶使用的一些二進制文件。
進程:程序運行後,被加載到內存中與其相關的一些信息。如進程標識PID、內存占用率等等。
程序是靜態的概念,本身作為一種軟件資源長期保存,而進程是程序的執行過程,他是動態概念,有一定的生命期,是動態產生和消亡的。
程序和進程無一一對應關系。一個程序可以由多個進程共用。另一方面,一個進程在活動中有可順序地執行若干個程序。

父進程:程序運行時候的第一個進程可以理解為父進程
子進程:由程序進程衍生出來的進程稱為子進程
當父進程終止時,子進程也隨之而終止。但子進程終止,父進程並不一定終止。

2、任務管理
工作管理是在Bash環境下,在單一終端機接口下同時進行多個工作的行為管理。比如在登陸Bash後,要同時編譯軟件、復制文件、編輯文件等等,這就是用到工作任務管理了。當然,你也可以多打開幾個終端來同時進行上述的工作,但畢竟,終端有時候會被用完,或者是使用數量或連接數受到限制,有可能只能打開一個終端來為你工作。

這裡面我們還需要來了解一下什麼是前台進程與後台進程。
前台:如在shell提示符輸入命令後,創建一個子進程,運行命令,shell等待命令退出,然後返回到對用戶給出提示符。這條命令與shell異步運行,即在前台運行,用戶在空完成之前,不能執行另外一個命令。

後台:如在shell提示符輸入命令後,若後面跟隨一個&,shell創建的子進程運行此命令,但不等待命令退出,而直接返回到對用戶的提示。這條命令與shell同步運行,即在後台運行。但後台進程必須是非交互式的。而後後台的進程是不能用Ctrl+c來終止的。

相關的命令
把命令放到後台運行,就是在命令的後面加上“&”

進程的暫停與終止
暫停:Ctrl+z
終止:Ctrl+c

進程的恢復
恢復到前台繼續運行:fg
恢復到後台繼續運行:bg

查看後台進程:jobs

下面我們來舉個例子

[root@ www.linuxidc.com ~]# cp -r /usr/ /tmp &
[1] 1627這裡就是把復制的命令放到後台來操作了,他的PID是1627,任務編號是1

[root@ www.linuxidc.com ~]# jobs
[1]+  Running                 cp -i -r /usr/ /tmp &查看到命令正在運行中

如果把命令調到前台,就用下面的命令

[root@ www.linuxidc.com ~]# fg %1
cp -i -r /usr/ /tmp用Ctrl+z把此命令丟到後台並讓其暫停

^Z
[1]+  Stopped                 cp -i -r /usr/ /tmp查看任務情況

[root@ www.linuxidc.com ~]# jobs
[1]+  Stopped                 cp -i -r /usr/ /tmp讓其繼續工作

[root@ www.linuxidc.com ~]# bg %1
[1]+ cp -i -r /usr/ /tmp &我們看到任務就繼續進行了

[root@ www.linuxidc.com ~]# jobs
[1]+  Running                 cp -i -r /usr/ /tmp &如果任務執行完成後,再用jobs來查看的話,是有個Done提示

[root@ www.linuxidc.com ~]# jobs
[1]+  Done                    cp -i -r /usr/ /tmp特別注意:就算程序被放到後台執行,但如果您的終端斷掉的話,後台執行的程序同樣會中斷。為了解決這個問題,可以通過下面的方法來完善。
1、用計劃任務來實現(這個就不多說了,因為很常見)
2、用nohup:格式nohup [指令與參數] &

[root@ www.linuxidc.com ~]# nohup cp -r /usr/ /tmp &
[1] 1699
[root@ www.linuxidc.com ~]# nohup: ignoring input and appending output to `nohup.out'

[root@ www.linuxidc.com ~]# jobs
[1]+  Running                 nohup cp -r /usr/ /tmp &
[root@ www.linuxidc.com ~]# exit再重新登陸一下

[root@ www.linuxidc.com ~]# jobs這時候是看不到東西的,但用ps就能發現了

ps -ef |grep cp
root      1699     1 10 22:14 ?        00:00:06 cp -r /usr/ /tmp這個進程ID還是1699哦,和上面的是一樣的。這就說明我們雖然終端退出來了,但任務沒有中斷,依然在繼續執行中。

Copyright © Linux教程網 All Rights Reserved