Linux核心之程序和檔案共享

2022-06-09 05:15:07 字數 2756 閱讀 1253

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核心之程序管理 支援執行緒的計算機系統裡面,程序作為資源分配的基本單位而存在,執行緒作為排程的基本單位而存在.執行緒僅擁有必不可少的一些資源,如 一組暫存器,堆疊資訊等等和其他執行緒共享同乙個程序的所有資源.所以,在同乙個程序的執行緒切換時不需要大量的儲存和恢復工作,同時由於共享同乙個儲存...

程序 記憶體和檔案

程序是作業系統裡面的核心概念。它指的是乙個運動中的程式。從名字上看,程序表示的就是進展中的程式。乙個程式一旦在計算機裡執行起來,它就稱為乙個程序。作業系統對程序的管理通過程序表來實現。程序表裡存放的是關於程序的一切資訊。在任何時候,程序所占有的全部資源,包括分配給該程序的記憶體,核心資料結構和軟資源...