Linux複習 基礎知識

2021-10-24 06:24:47 字數 4077 閱讀 5630

1.linux  基礎

目錄結構  檔案型別   檔案許可權   命令

1)/etc     /boot   /bin   /home   /lib    /proc     /usr    /dev   mnt

2)-普通檔案 d目錄檔案 p管道檔案 l鏈結檔案 c,b裝置檔案  s套接字檔案

3)許可權   chmod , r:4   w:2   x:1  文字設定法  數字設定法

u 屬   g 組    o 其他

命令:ls  -l(顯示許可權)

命令:chmod  u+x  a.c (給檔案a.c的屬加x許可權)

4)檔案:cd,touch,mkdir,cp,rm,mv,cat,more,less,tail,head,find,grep,tar

程序:ps  -ef,  top  ,& (放後台),jobs,  

vi/vim   使用者管理  su

2.gcc /g++   gdb  除錯   makefile

main.c

預編譯   編譯   彙編  鏈結   

gcc   -e  main.c   -o   main.i

gcc   -s  main.i   -o   main.s

gcc   -c  main.s   -o   main.o

gcc   -o  main  main.o

四句合一:gcc   -c  main.c    main.o

3.makefile/makefile  管理工程  make

vi makefile(**如下)

all:main

main:main.o add.c max.o

(tab鍵)gcc -o main main.o add.o max.o

main.o:main.c

(tab鍵)gcc -c main.c

add.o:add.c

gcc -c add.c

max.o:max.c

gcc -c max.c

clean:

rm -rf *.o main

4. gdb除錯  多執行緒  多程序,編譯加上 -g  包含除錯資訊

除錯的是可執行檔案(gdb main)

命令:gcc -o mian mian.c -g ,gdb main

l(顯示十行**)

l 2(保證顯示第2行的**)

l add.c:1(去add.c的第1行)

b 3(給剛才顯示的**中第3行加斷點)

b max(給max.c的檔案中加斷點)

r(執行)

p(列印)

n(下一行)

bt(現在執行到**,函式呼叫棧關係)

s(進入函式)

finish(退出方法)

q(退出)

threads

thread id(多執行緒除錯)

5.庫檔案 :存放的是預先編譯好的方法集合   標頭檔案 (.h):  /usr/include/   

可執行程式: /bin  /usr/bin     庫檔案:/lib    /usr/lib

靜態庫:libxx.a    複製過來

共享庫:libxx.so   標記一下,不複製  ldd檢視可執行程式用到了哪些共享庫

靜態庫:命令:   ar crv lib***.a add.o max.o *.o

【crv:c建立庫,r把方法新增到庫里,v顯示資訊】

庫的使用編譯命令:gcc -o main mian.c -l/home/stu/mydir0228 -lfoo

(-l後加路徑,鏈結的時候到這個路徑下找,-l後加靜態庫庫名)

生成共享庫命令:gcc -shared -fpic -o lib***.so *.o

【-fpic:與**位置無關】

庫的使用編譯命令:gcc -o main mian.c -l/home/stu/mydir0228 -lfoo

(-l後加路徑,鏈結的時候到這個路徑下找,編譯的時候找不到,-l後加靜態庫庫名)

命令: ldd main 檢視可執行程式用到了哪些共享庫

一般應該把庫放在標準路徑下,不在的話用命令拷貝到/usr/lib下。

用管理員身份拷貝命令:mv libfoo.so /usr/lib

6.程序3個基本狀態:就緒  執行  阻塞

main.c存放在磁碟中,執行的時候,將io中磁碟上拷貝到記憶體上,然後執行命令,正在執行的命令,就是程序。

作業系統

程序   併發(同段時間,交替進行)  並行(同時進行,多個處理器)

7.複製程序 fork  替換程序 exec   僵死程序  訊號  kill()   signal()  

(q) 15    (強制結束) 9     (複製) 2 sigint      (子程序結束給父程序傳送)17sigchld

輸入命令檢視訊號意義:vi /usr/include/bits/signum.h

fork + exec  新程序

檔案描述符   open  write  read  clone    父程序開啟的檔案,子程序也可以共享訪問。

8.程序間通訊:管道  共享記憶體  訊息佇列   套接字 訊號量(多個程序)

管道:有名和無名管道的區別,寫入的資料在記憶體中,半雙工

9.執行緒: 同步方法:訊號量(乙個程序中的多個執行緒用的)( 二值訊號量  計數訊號量)

互斥鎖  條件變數  讀寫鎖

執行緒安全:同步  可重入函式  strtok   strtok_r

ps -elf  【l顯示出線程資訊】

10.網路:分層 :應用層 傳輸層 網路層 資料鏈路層

ip  mac  埠號   網路協議:http(應用)   tcp(傳輸)  ip(網路) arp(資料鏈路)

tcp/udp程式設計流程  

tcp  :面向連線的,可靠的,流式服務

(面向連線:三次握手,四次揮手)

(可靠:應答確認,超時重傳,滑動視窗,流量控制)

(流式服務:多個send(),可能一起傳送,會發生粘包)

udp :無連線的,不可靠的,資料報

狀態轉移圖 time_wait  存在的意義:

1.可靠的終止tcp連線

2.遲來的報文能被識別並被丟棄。

客戶端的connect()時候發生三次握手

listen(sockfd,5)   linux:已完成三次握手的長度

unix:已完成+未完成的長度

多執行緒  多程序  處理併發

http協議    www.baidu.com

埠號ip:80

長連線:1次連線,多次請求

200:成功

500:伺服器錯誤

400:客戶端錯誤  403   404

11.select

2 = select()  (2代表總共有兩個描述符)

n == -1失敗

n ==0 超時

n > 0 有n個描述符有事件

select過程:

本文是自己學習的筆記,都是重點,但是沒有特別詳細,可根據本文繼續學習,一起加油。

基礎知識複習

總結 1.閉包 閉包的好處就是讓乙個變數常駐記憶體,供後續的程式使用 2.檢視乙個物件是可迭代物件的方法 1 使用dir 函式.如果結果中有 iter 就是可迭代物件 print dir obj 2 通過isinstance 函式,返回true就是可迭代物件 from collections imp...

linux基礎知識點複習

暫時先放一些linux的一些操作的東西 1 vm 虛擬機器 2 redhad 作業系統 3 xshell 終端軟體 4 notepad 編碼 5 課件 思維導圖 mindmanage word ppt xshell nat模式連線 ssh ip位址 注意 1 必須要有網 2 虛擬機器的網絡卡要開啟 ...

c基礎知識複習

c的發展歷程 c原本是為了開發unix作業系統而設計的語言 如此說,應該c比unix更早問世,而事實並非如此,最早的unix是由彙編寫的 c語言本來是美國人開發的,解讀c的宣告,最好還是用英語來讀 解讀c宣告的步驟 1 首先著眼於識別符號 變數名或者函式名 2 從距離識別符號最近的地方開始,依照優先...