1、目錄結構 /lib /home /boot /proc /usr /var /mnt /root ……
2、-普通文件 d目錄文件 l鏈接文件 p管道文件 c,b設備文件 s套接字
3、權限:chomd r 4 w 2 x 1 - 0
4、基本命令:
文件:ls(顯示當前目錄下的文件)touch(新建普通文件)rm(刪除普通文件)rmdir(刪除空目錄) cp(拷貝)mkdir(創建目錄文件) mv(重命名) more(分屏幕顯示) vi/vim(文本編輯) find (查找文件) grep(tail (查看日誌文件) cat(合併文件cat file1->file(將file1文件合併到file 中)) less(查看尾幾行文件)head(查看頭幾行)wc(統計文件數目) ctrl+c(終止進程)ctrl+d(停止輸入) ctrl+z(停止進程,還可恢復)lib(庫文件) root(管理員) dev(設備文件)tar gzip(解壓壓縮文件)
進程:ps(查看進程) kill pid(結束進程) &(在後臺運行程序) jobs(顯示後臺和掛起的進程任務)kill -9 pid(強制結束進程)kill -stop pid(掛起進程)pstree(以樹狀圖顯示進程)
管理:halt init 0 …… useradd(添加用戶) passwd(顯示當前工作目錄絕對路徑) reboot(重啓)shutdown(立即關機)ldd(可查看可執行程序用到哪些共享庫)
網絡:ifconfig netstat(查看進程連接端口號) topdump(進行抓包)ltrace(跟蹤庫函數)
編譯:gcc(c語言語法)/g++(按c++語法,默認不連接c++標準庫,需要手動指定)
調試:gdb l,b,n,b,p,c,s,finish,q(具體可見另外一博客)ps -elf(顯示當前線程)
監測:taskset 命令 -p 掩碼(讓進程在指定cpu上運行,讓一個進程固定在一個cpu上運行)top(產看負載及內部信息)lsof(列出當前系統打開的所有文件描述符) free(顯示當前系統運行統計信息) ipcrm -s/-q/-m id 根據id分別刪除信號量,消息隊列,共享內存)ipcs -s/-q/-m 分別顯示系統的信號量,消息隊列,共享內存
5、庫文件:預先編譯好的方法的集合
libxx.a 靜態庫 可執行程序用到的方法
程序在鏈接的過程中,鏈接器從庫文件中取得所需的代碼,複製到生成的可執行文件中。因此,靜態庫是在程序的鏈接階段被複制到程序當中,和程序的執行過程沒有任何關係。
libxx.so 共享庫 可執行程序不包含用到的方法,只做標記
動態庫在鏈接過程中並沒有被加載到程序當中,而程序在運行時被系統動態加載到內存當中供程序使用。
1.同樣的程序,使用靜態庫比使用共享庫,程序更大。
2.靜態庫在編譯鏈接時,就可加入到可執行程序中,共享庫是在運行程序時動態裝載。
3.目標主機沒有靜態庫,程序可以運行,沒有共享庫運行不了。
4.共享庫升級後,程序不需要重新編譯,可以直接被使用,靜態庫需要重新編譯,鏈接新方法。
靜態庫和共享庫的區別:
靜態庫的可執行文件中包含了庫代碼的一份完整的拷貝,因此,當它被多次使用時就會有多份沒用的拷貝在內存中,所以比較佔內存,而動態庫系統只需載入一次動態庫,不同的程序可以得到內存當中相同的動態庫的副本,因此會節省很多內存。
5、makefile管理工具
功能:關係到整個工程的編譯規則,也可在執行操作做系統的命令,實現自動化編譯整個工程3提高編譯效率(只會編譯修改的和依賴於修改的哪些文件)
編寫步驟:現有5個文件,分別爲:main.c test1.h test2.h test1.c test2.c
編寫makefile文件,名稱爲makefile過程如下:
main:main.o test1.o test2.o
gcc -o main main.o test1.o test2.o
main.o:main.c test1.h test2.h
gcc -c main.c
test1.o:test1.c test1.h
gcc -c test1.c
test2.o:test2.c test2.h
gcc -c test2.c
clean:rm -f *.o main
執行命令:make 姐可以生成可執行文件main,如果要刪除可執行文件及所有的中間目標文件,只需要執行下make clean
**clean不是一個文件,它只是一個動作的名字。
make和makefile的聯繫:
make是一個命令,makefile是一個文件,當makefile文件寫好後,只需要一個make命令就可以將makefile文件運行起來。