Linux基礎部分總結-----基礎命令部分

一. 基礎命令部分

1. 基礎命令

(1) ps:顯示正在運行的進程;

(2) mpstat:實時監測多處理器系統上的每個CPU使用情況;

(3) vmstat:實時輸出系統各個資源的使用情況;

(4) tcpdump:用於過濾數據包或制定打開格式;

(5) lsof:列出當前系統打開的文件描述符;

(6) ipcs:查看信號量;

(7) ipcsm:查看已經銷燬的信號量;

(8) poweroff:立即關機;

(9) reboot:立即重啓;

(10)locate:查找包含指定字符串的文件或目錄;(locate + 字符串);

(11)more:分屏顯示文件內容;

(12)nl:可以顯示文件內容和行號;

(13)eject:將光盤驅動中的光盤彈出和收回

(14)fdisk:列出系統中所有的儲存設備;

具體歸納:

(1)操作文件的命令:tail:默認在屏幕上顯示指定文件的最後10行;

                                            more:以全屏方式按頁顯示文本文件的內容;

                                           vi:編輯模式下可以完成文本的編輯功能,命令模式下可以完成對文件的操作命令;

                                            find:在給定目錄下查找符合給定條件的文件;

                                           grep:篩選過濾文本文件的行。(1.在test.txt文件中,篩選包括mother的行:grep mother test.txt;2.在test.txt文件中,篩選不包含mother的行:grep -v mother test.txt;3.查找以特定字符串結尾的行:grep "\.$" test.txt[這裏\表示轉義,這裏查找以.結尾的行]);

                                             awk:在文件或者字符串中基於指定瀏覽和抽取信息;(工作流程:讀入有“\n”換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,$0表示所有域;$1表示第一個域,$n表示第n個域。默認域分割符是“空白鍵”或【tab】鍵);

(2)與進程相關的:ps:顯示正在運行的進程;

                                       kill:用來刪除執行中的程序或者工作

                                       top:用來監控linux的系統狀況,比如cpu、內存的使用情況

                                       jobs:用於顯示linux中任務列表以及任務狀態,包括後臺運行的任務。該命令可以顯示任務號及其對應的進程號

(3)系統用戶管理類:useradd:用來建立用戶賬戶號和創建用戶的起始目錄,使用權限是超級用戶

                                          passwd:用來更改使用者的密碼

(4)網絡方面:netstat:用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態等;

                               lsof:列出當前系統打開的文件描述符

                                tcpdump:根據使用者的定義對網絡上的數據包進行截獲的包分析工具。可以將網絡中 傳送的數據包的“頭”完全截獲下來提供分析;

2. gdb調試命令

(1) 調試多進程

gdb set follow-fork-mode mode

*mode 可以選擇爲parent 或者 child

(2)調試多線程

a.利用info threads查看線程信息;

b.thread id 調試目標id指定的線程;

c.set scheduler-locking off | on | step

*“off”表示不鎖定任何線程;

 “on”只有當前被調試的線程繼續運行;

 “step”在單步執行的時候,只有當前線程會執行;

(3)普通調試

-l:顯示代碼;

-r:運行;

-p:打印;

-s:進入到函數

-b:加上斷點

-bt:查看函數執行到那塊

-n:單步執行;

-c:程序繼續向下一個執行

3.makefile文件

(1)功能:實現自動化編譯整個工程;

(2)簡單的編寫步驟:

現在有5個文件,分別爲:main.c    my1.h my2.h my1.c my2.c

現在編寫makefile文件,名稱爲makefile.過程如下:

a. main: main.o  my1.o  my2.o

gcc –o main main.o my1.o my2.o

main.o:main.c my1.h my2.h

gcc –c main.c

my1.o:my1.c my1.h

gcc –c my1.c

my2.o:my2.c my2.h

gcc –c my2.c

clean:

rm –f *.o main

b.執行命令:make  就可以生成可執行文件main.如果要刪除可執行文件以及所有的中間目標文件,只需要執行下 make clean .

**clean不是一個文件,它只是一個動作的名字。

(3)文件說明

在上面的makefile文件當中,目標文件包括:執行文件main 和中間目標文件(*.o),依賴文件(就是冒號後面的那些文件)。每一個 .o 文件都有一組依賴文件,而這些 .o 文件又是執行文件main的依賴文件。依賴關係的實質上就是說明了目標文件是由那些文件生成的。

(4)make的工作原理

當我們輸入make時:

a. make首先會在當前目錄下尋找makefile文件

b. 如果找到,它會找到文件中的第一個目標文件main,並把這個文件作爲最終的目標文件。

c. 如果main文件不存在或者是main所依賴的後面的 .o 文件的修改時間要比main這個文件新,那麼,他就會執行後面所定義的命令來生成main這個文件。

d. 如果main所依賴的 .o 文件也存在,那麼make會在當前文件中找目標爲 .o 文件的依賴性,如果找到則再根據那一個規則生成 .o 文件。

e. 由於我的c文件和h文件都是存在的,所以make會生成 .o 文件,然後再用 .o 文件聲明make的最終文件,也就是執行文件main.

(5)make和makefile的聯繫

make是一個命令,makefile是一個文件,當makefile 文件寫好後,只需要一個make命令就可以將makefile文件運行起來。

4.庫

(1)庫是什麼?

預先編譯好的方法的集合。

(2) 分類

a. 靜態庫

I 特點:程序在鏈接的過程當中,連接器從庫文件中取得所需代碼,複製到生成的可執行文件當中。因此,靜態庫

是在程序的鏈接階段被複制到程序當中,和程序的執行過程沒有關係。

II 創建

Eg:有兩個源文件:main.c  max.c

a) gcc –c main.c max.c  (得到main.o 和max.o)

b) 使用ar將目標文件歸檔

ar crv libxxx.a main.o max.o

**libxxx.a即爲我們創建的靜態庫。

a. 動態庫

I 特點:動態庫在鏈接階段並沒有被加載到程序當中,而程序在運行時被系統動態加載到內存當中供程序使用

II 創建

Eg:有一個源文件 max.c

a) gcc –fPIC –shared –o libxx.so max.c

上行代碼等價與:gcc –c –fPIC max.c

 gcc –shared –o libxx.so max.o

(3) 區別

靜態庫的可執行文件當中包含了庫代碼的一份完整的拷貝,因此,當它被多次使用時就會有多份沒用的拷貝在內存當中,所以它比較佔內存;而動態庫系統只需載入一次動態庫,不同的程序可以得到內存當中相同的動態庫的副本,因此會節省很多內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章