<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
當我們執行程式時,Linux會為程式建立一個特殊的環境,該環境包含程式執行需要的所有資源,以保證程式能夠獨立執行,不受其他程式的干擾。這個特殊的環境就稱為程序。每個 Linux 命令都與系統中的程式對應,輸入命令,Linux 就會建立一個新的程序。例如使用 ls 命令遍歷目錄中的檔案時,就建立了一個程序。簡而言之,程序就是程式的範例。
系統通過一個五位數位跟蹤程式的執行狀態,這個數位稱為 pid 或程序ID。每個程序都擁有唯一的 pid。
理論上,五位數位是有限的,當數位被用完時,下一個 pid 就會重新開始,所以 pid 最終會重複。但是,兩個 pid 一樣的程序不能同時存在,因為Linux會使用 pid 來跟蹤程式的執行狀態。
有兩種方式來建立程序:前臺程序和後臺程序。
預設情況下,使用者建立的程序都是前臺程序;前臺程序從鍵盤讀取資料,並把處理結果輸出到顯示器。
我們可以看到前臺程序的執行過程。例如,使用 ls 命令來遍歷當前目錄下的檔案:
$ls ch*.doc ch01-1.doc ch010.doc ch02.doc ch03-2.doc ch04-1.doc ch040.doc ch05.doc
這個程式就執行在前臺,它會直接把結果輸出到顯示器。如果 ls 命令需要資料(實際上不需要),那麼它會等待使用者從鍵盤輸入。
當程式執行在前臺時,由於命令提示字元($)還未出現,使用者不能輸入其他命令;即使程式需要執行很長時間,也必須等待程式執行結束才能輸入其他命令。
後臺程序與鍵盤沒有必然的關係。當然,後臺程序也可能會等待鍵盤輸入。
後臺程序的優點是不必等待程式執行結束就可以輸入其他命令。
建立後臺程序最簡單的方式就是在命令的末尾加 &,例如:
$ls ch*.doc & ch01-1.doc ch010.doc ch02.doc ch03-2.doc ch04-1.doc ch040.doc ch05.doc ch06-2.doc ch01-2.doc ch02-1.doc
如果 ls 命令需要輸入(實際上不需要),那麼它會暫停,直到使用者把它調到前臺並從鍵盤輸入資料才會繼續執行。
可以使用 ps 命令檢視程序的執行狀態,包括後臺程序,例如:
$ps PID TTY TIME CMD 18358 ttyp3 00:00:00 sh 18361 ttyp3 00:01:31 abiword 18789 ttyp3 00:00:00 ps
還可以結合 -f 選項檢視更多資訊,f 是 full 的縮寫,例如:
$ps -f UID PID PPID C STIME TTY TIME CMD amrood 6738 3662 0 10:23:03 pts/6 0:00 first_one amrood 6739 3662 0 10:22:54 pts/6 0:00 second_one amrood 3662 3657 0 08:10:53 pts/6 0:00 -ksh amrood 6892 3662 4 10:51:50 pts/6 0:00 ps -f
每列的含義如下:
ps 命令還有其他一些選項:
當程序執行在前臺時,可以通過 kill 命令或 Ctrl+C 組合鍵來結束程序。
如果程序執行在後臺,那麼首先要通過 ps 命令來獲取程序ID,然後使用 kill 命令“殺死”程序,例如:
$ps -f UID PID PPID C STIME TTY TIME CMD amrood 6738 3662 0 10:23:03 pts/6 0:00 first_one amrood 6739 3662 0 10:22:54 pts/6 0:00 second_one amrood 3662 3657 0 08:10:53 pts/6 0:00 -ksh amrood 6892 3662 4 10:51:50 pts/6 0:00 ps -f $kill 6738 Terminated
如上所示,kill 命令終結了 first_one 程序。
如果程序忽略 kill 命令,那麼可以通過 kill -9 來結束:
$kill -9 6738 Terminated
1.命令格式:
kill[引數][程序號]
2.命令功能:
傳送指定的訊號到相應程序。不指定型號將傳送SIGTERM(15)終止指定程序。如果任無法終止該程式可用“-KILL” 引數,其傳送的訊號為SIGKILL(9) ,將強制結束程序,使用ps命令或者jobs 命令可以檢視程序號。root使用者將影響使用者的程序,非root使用者只能影響自己的程序。
3.命令引數:
注意:
訊號說明:
只有第9種訊號(SIGKILL)才可以無條件終止程序,其他訊號程序都有權利忽略。 下面是常用的訊號:
每個 Linux 程序會包含兩個程序ID:當前程序ID(pid)和父程序ID(ppid)。可以暫時認為所有的程序都有父程序。
由使用者執行的大部分命令都將 Shell 作為父程序,使用 ps -f 命令可以檢視當前程序ID和父程序ID。
正常情況下,子程序被終止時會通過 SIGCHLD 訊號通知父程序,父程序可以做一些清理工作或者重新啟動一個新的程序。但在某些情況下,父程序會在子程序之前被終止,那麼這些子程序就沒有了“父親”,被稱為孤兒程序。
init 程序會成為所有孤兒程序的父程序。init 的 pid 為1,是Linux系統的第一個程序,也是所有程序的父程序。
如果一個程序被終止了,但是使用 ps 命令仍然可以檢視該程序,並且狀態為 Z,那麼這就是一個殭屍程序。殭屍程序雖然被終止了,但是仍然存在於程序列表中。一般殭屍程序很難殺掉,你可以先殺死他們的父程序,讓他們變成孤兒程序,init 程序會自動清理殭屍程序。
常駐程序一般是系統級程序,以 root 許可權執行在後臺,可以處理其他程序的請求。
常駐程序沒有終端,不能存取 /dev/tty 檔案,如果使用 ps -ef 檢視該程序,tty 這一列會顯示問號(?)。
更確切地說,常駐程序通常執行在後臺,等待指定事件發生,例如列印程序是一個常駐程序,它會等待使用者輸入列印相關的命令並進行處理。
top 命令是一個很有用的工具,它可以動態顯示正在執行的程序,還可以按照指定條件對程序進行排序,與Windows的工作管理員類似。
top 命令可以顯示程序的很多資訊,包括實體記憶體、虛擬記憶體、CPU使用率、平均負載以及繁忙的程序等。例如:
$top
任務(task)是最抽象的,是一個一般性的術語,指由軟體完成的一個活動。一個任務既可以是一個程序,也可以是多個程序。簡而言之,它指的是一系列共同達到某一目的的操作。例如,讀取資料並將資料放入記憶體中。這個任務可以由一個程序來實現,也可以由多個程序來實現。 每個任務都有一個數位表示的任務號。
程序(process)常常被定義為程式的執行。可以把一個程序看成是一個獨立的程式,在記憶體中有其完備的資料空間和程式碼空間。一個程序所擁有的資料和變數只屬於它自己。
jobs 命令可以用來檢視系統中正在執行的任務,包括後臺執行的任務。該命令可以顯示任務號及其對應的程序ID。一個任務可以對應於一個或者多個程序號。
jobs 命令的 -l 選項可以檢視當前任務包含的程序ID:
$jobs -l [1] + 1903 running ls ch*.doc & $
其中,第一列表示任務號,第二列表示任務對應的程序ID,第三列表示任務的執行狀態,第四列表示啟動任務的命令。
1、fg 命令可以將後臺任務調到前臺,語法為:
$fg %jobnumber
jobnumber 是通過 jobs 命令獲取的後臺任務的的序號,注意不是pid。如果後臺只有一個任務,可以不指定 jobnumber。
2、bg 命令可以將後臺暫停的任務,調到前臺繼續執行,語法為:
$bg %jobnumber
jobnumber 同樣是通過 jobs 命令獲取的後臺任務的的序號,注意不是pid。如果前臺只有一個任務,可以不指定 jobnumber。
如果希望將當前任務轉移到後臺,可以先 Ctrl+z 暫停任務,再使用 bg 命令。任務轉移到後臺可以空出終端,繼續輸入其他命令。
到此這篇關於Linux程序管理的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45