1.shell命令的執行和程序
shell 命令可以是內部或者外部命令。
內部(內建)命令(internal (built-in) command)的**本身就是shell程序的一部分。linux shell中的一些內部命令如.alias、bg、cd 、continue、echo 、exec 、exit 、fg 、jobs 、pwd 、set 、shift 、test 、time 、umask 、unset和wait。
外部命令是(external command)命令**以檔案的形式出現的稱為;檔案內容可以是二進位制**或者shell指令碼。通常使用的一些外部命令如grep、more 、cat 、mkdir 、rmdir 、ls 、sort 、ftp 、telnet 、lp和ps 。
shell先後使用fork和exec系統呼叫來執行乙個外部二進位制命令。
2.fork和exec
系統先用fork複製乙個與父程序相同的暫存程序,這個程序與父程序的唯一區別是pid。然後暫存程序以exec方式載入實際要執行的程式。
3.程序有關命令
ps命令用來檢視系統中執行的程序的各種屬性
top命令:實時監視cpu的活動狀態。該命令顯示系統中cpu密集型任務的狀態並且允許你互動地控制這些程序。
kill命令:終止指定pid的程序
4.作業管理
前台foreground執行:
當鍵入命令並敲後,
•shell執行命令
•在當前命令執行結束即shell返回前,你不能執行任何命令。
需要執行乙個要花費很長時間才能完成的linux命令(或者任一這樣的程式),當命令執行時,你無法做其它工作。
後台background執行命令
linux可以在執行命令的同時做其他工作
❖在命令後面加上乙個「與」操作符號(&),使該命令在後台操作。
find / -name foo –print > foo.paths 2> /dev/null &
[1] 23467
括號中shell返回的數字是該程序的作業號(job number);另外乙個數字是程序pid。
find 命令的作業號是1,其pid為23467。
作業是乙個不執行於前台的程序,並且只能在關聯的終端上訪問。這樣的程序通常在後台執行或者成為被掛起的程序。
fg命令可以使後台程序轉到前台
使用掛起乙個前台程序。
使用bg命令把被掛起的程序轉到後台。
使用jobs命令顯示所有掛起的(停止的)和後台程序的作業號,確定哪乙個是當前的程序。
命令suspend 可以掛起當前shell程序
❖終止後台程序可用兩種方法中的一種:
•使用kill命令
•先使用fg命令把程序轉向前台,然後按。
kill命令的主要目的是向程序傳送訊號(也稱為軟中斷)。
程序接收到訊號後,可以採取以下三種行為之一:
•接受核心規定的預設動作
•忽略該訊號
•截獲該訊號並且執行使用者定義的動作
kill命令
kill [-signal_number]proc-list
kill -l
常用的訊號號碼: 1 結束通話
9 強制終止
15 終止程序
為了終止乙個忽略15號訊號或者其它訊號的程序,需要使用9號訊號,即強制終止訊號
程序號0可以指代所有在當前登入期間建立的程序。因此 kill –9 0命令可以終止所有登入時產生的程序(即,當前會話中的所有程序),這樣,你自己就不得不退出系統
❖linux核心中的檔案機制
linux檔案共享方法
❖通過副本共享:
複製需要共享的檔案並分發到組內每個成員
❖通過同一使用者名稱登入共享:
共用乙個賬號登入系統。
❖為共享檔案設立適當的訪問許可權:
把所有要共享的檔案放到乙個成員帳號下,設定組成員具有讀寫和執行的許可權
❖為團隊成員建立乙個使用者組
建立乙個新使用者組只包括專案組的所有成員,每個使用者用自己的賬號登入,為自己的文 件設立適當的訪問許可權,使得它們可以被組中的其他成員訪問。
硬鏈結(hard link)
軟(符號)鏈結(soft/symbolic link)
❖硬鏈結和符號鏈結
硬鏈結是乙個指向檔案索引節點的指標
ln命令用來建立硬鏈結和符號鏈結。
語法:ln [options] existing-file new-file
ln [options] existing-file-list directory
常用選項:
-f 強迫建立鏈結
-n 如果「new-file」已存在,不建立鏈結。
-s 建立乙個符號鏈結而不是硬鏈結
-d 建立目錄的硬鏈結
例: $ ln chapter3 chapter3.hard
❖硬鏈結的特點
•不可跨越檔案系統
•只有超級使用者才可以建立目錄硬鏈結
•不占用空間(極少)
❖ 系統為共享的使用者建立乙個link型別的新檔案,將這新檔案登記在該使用者共享目錄項中,這個link型檔案包含連線檔案的路徑名。該類檔案在用ls命令長列表顯示時,檔案型別為l。
當使用者要訪問共享檔案且要讀link型新檔案時,作業系統根據link檔案型別性質將檔案內容作為路徑名去訪問真正的共享檔案。
❖符號鏈結的特點
• 可跨越檔案系統,甚至跨越網路(nfs)
• 如果鏈結指向的檔案從乙個目錄移動到另乙個目錄,就無法通過符號鏈結訪問它
• 占有少量空間,存inode的資訊
linux程序和檔案操作 (基礎)
1 file.c 帶快取的 io 操作 帶快取的檔案 io 操作是在記憶體中開闢乙個 緩衝區 為程式中的每乙個檔案使 用。當執行讀檔案的操作時,從磁碟檔案中將資料先讀入記憶體 緩衝區 裝滿後再從 記憶體 緩衝區 依次讀入接收的資料。反之亦然。想對於 不帶快取的io 操作 其操作函式都為 open w...
Linux核心之程序管理
linux核心之程序管理 支援執行緒的計算機系統裡面,程序作為資源分配的基本單位而存在,執行緒作為排程的基本單位而存在.執行緒僅擁有必不可少的一些資源,如 一組暫存器,堆疊資訊等等和其他執行緒共享同乙個程序的所有資源.所以,在同乙個程序的執行緒切換時不需要大量的儲存和恢復工作,同時由於共享同乙個儲存...
程序 記憶體和檔案
程序是作業系統裡面的核心概念。它指的是乙個運動中的程式。從名字上看,程序表示的就是進展中的程式。乙個程式一旦在計算機裡執行起來,它就稱為乙個程序。作業系統對程序的管理通過程序表來實現。程序表裡存放的是關於程序的一切資訊。在任何時候,程序所占有的全部資源,包括分配給該程序的記憶體,核心資料結構和軟資源...