1. 程式人生 > >Linux 相關學習內容(不定期更新)

Linux 相關學習內容(不定期更新)

## Linux 主要目錄 | / | 根目錄,在 linux 下有且只有一個根目錄,所有的東西都是從這裡開始 | | ----------- | ------------------------------------------------------------ | | /bin | 可執行二進位制檔案的目錄,如常用的命令,ls, tar, mv, cat.. | | /boot | 放置linux系統啟動時用到的檔案,linux的核心檔案/boot/vmlinuz,系引導管理器/boot/grub | | /dev | 存放linux系統下的裝置檔案,常用的是掛載光碟機 mount /dev/chrom /mnt
/dev/ttl 表示終端 , /dev/null 表示無底洞垃圾桶 | | /etc | 系統配置檔案存放的目錄,不建議在此目錄下存放可執行檔案 | | /home | 使用者家目錄,每個使用者有自己的目錄 ~表示當前使用者的家目錄 | | /lib | 系統使用的函式庫的目錄,程式在執行過程中,需要呼叫一些額外的引數時需要函式庫協助 | | /lost+fount | 系統異常產生錯誤時,會將一些遺失的片段放置在此目錄下 | | /opt | 給主機額外安裝軟體所存放的目錄 | | /proc | 此目錄的資料都在記憶體中,如系統核心,外部裝置,網路狀態,由於資料都存放於記憶體中,所以不佔用磁碟空間,比較重要的檔案, 系統記憶體的對映目錄,提供核心和程序資訊有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等 | | /root | 系統管理員的家目錄 | | /sbin | 放置系統管理員使用的可執行命令,如:fdisk,shutdown, mount,與 /bin 不同的是,這幾個目錄是給系統管理員 root 使用的命令,一般使用者只能"檢視"而不能設定和使用 | | /tmp | 一般使用者或正在執行的程式臨時存放檔案的目錄,任何人都可以訪問,重要資料不可放置在此目錄下 | | /srv | 服務啟動之後需要訪問的資料目錄,如 www 服務需要訪問的網頁資料存放在 /srv/www 內 | | /usr | usr並不是user的縮寫,而是Unix Software Resource的縮寫,即“Unix 作業系統軟體資源”放在該目錄。這個目錄 相當於Windows作業系統的“C:\Windows\”和“C:\Program files\”這兩個目錄的綜合體 | | /var | 放置系統執行過程中經常變化的檔案 | - /usr/bin:存放應用程式 - /usr/share:存放共享資料 - /usr/lib:存放不能直接執行的,卻是許多程式執行所必需的一些函式庫檔案 - /usr/local:存放軟體升級包 - /usr/share/doc:系統說明檔案存放目錄 - /usr/share/man:程式說明檔案存放目錄 - /var/log:隨時更改的日誌檔案 - /var/spool/mail:郵件存放的目錄 - /var/run:程式或服務啟動後,其 PID 存放在該目錄下 ## 常用Linux命令 | 序號 | 命令 | 對應英文 | 作用 | | ---- | -------------- | -------------------- | ------------------------------------------------------------ | | 01 | ls | list | 檢視當前資料夾下的內容 | | 02 | pwd | print wrok directory | 檢視當前所在資料夾 | | 03 | cd [目錄名] | change directory | 切換資料夾 | | 04 | touch [檔名] | touch | 如果檔案不存在,新建檔案 | | 05 | mkdir [目錄名] | make directory | 建立目錄 | | 06 | rm [檔名] | remove | 刪除指定的檔名 | | 07 | clear | clear | 清屏 | | 08 | which | which | 檢視命令位置,如果找到則顯示 which ls -->
/bin/ls | | 09 | who | who | 檢視當前所有登入系統的使用者資訊 | | 10 | reboot | reboot | 重新啟動作業系統 | | 11 | shutdown | shotdown | shotdown -r now 重新啟動作業系統,shutdown會給別的使用者提示
shutdown -h now 立刻關機,其中now相當於時間為0的狀態
shutdown -h 20:25 系統在今天的20:25 會關機
shutdown -h +10 系統再過十分鐘後自動關機 | | 12 | wc | Word Count | \- c 統計位元組數 - l 統計行數 - w 統計字數 | | 13 | grep | | | ### **歸檔管理:tar** tar命令很特殊,其引數前面可以使用“-”,也可以不使用。 | 引數 | 含義 | | :--- | --------------------------------------------------------- | | -c | 生成檔案檔案,建立打包檔案 | | -v | 列出歸檔解檔的詳細過程,顯示進度 | | -f | 指定檔案檔名稱,f後面一定是.tar檔案,所以必須放選項最後 | | -t | 列出檔案中包含的檔案 | | -x | 解開檔案檔案 | 注意:除了f需要放在引數的最後,其它引數的順序任意。 ```powershell C:\Users\asus\Desktop\review\testlinuk λ tar -cvf test.tar * 1.txt 2.txt 3.txt tes1/ tes2/ tes2/tes3/ C:\Users\asus\Desktop\review\testlinuk λ ls 1.txt 2.txt 3.txt tes1/ tes2/ test.tar C:\Users\asus\Desktop\review\testlinuk λ rm *.txt C:\Users\asus\Desktop\review\testlinuk λ rm -r *[12] C:\Users\asus\Desktop\review\testlinuk λ ls test.tar C:\Users\asus\Desktop\review\testlinuk λ tar -xvf test.tar 1.txt 2.txt 3.txt tes1/ tes2/ tes2/tes3/ C:\Users\asus\Desktop\review\testlinuk λ ls 1.txt 2.txt 3.txt tes1/ tes2/ test.tar ``` ### **檔案解壓縮:gzip** tar與gzip命令結合使用實現檔案打包、壓縮。 tar只負責打包檔案,但不壓縮,用gzip壓縮tar打包後的檔案,其副檔名一般用xxxx.tar.gz >
gzip [options] compressfile | 選項 | 含義 | | :--- | -------------- | | -d | 解壓 | | -r | 壓縮所有子目錄 | tar這個命令並沒有壓縮的功能,它只是一個打包的命令,但是在tar命令中增加一個選項(-z)可以呼叫gzip實現了一個壓縮的功能,實行一個先打包後壓縮的過程。 > tar -zcvf test.tar.gz * # 將當前目錄下的檔案以及資料夾打包並壓縮為test.tar.gz 3. **檔案解壓縮:bzip2** tar與bzip2命令結合使用實現檔案打包、壓縮(用法和gzip一樣)。 tar只負責打包檔案,但不壓縮,用bzip2壓縮tar打包後的檔案,其副檔名一般用xxxx.tar.gz2。 在tar命令中增加一個選項(-j)可以呼叫bzip2實現了一個壓縮的功能,實行一個先打包後壓縮的過程。。 > 壓縮用法:tar -jcvf 壓縮包包名 檔案...(tar jcvf bk.tar.bz2 *.c) > > 解壓用法:tar -jxvf 壓縮包報名 (tar jxvf bk.tar.bz2) ### **修改檔案許可權:chmod** ![](https://img2020.cnblogs.com/blog/778496/202007/778496-20200708102419777-1720516418.png) chmod 修改檔案許可權有兩種使用格式:字母法與數字法。 字母法:chmod u/g/o/a +/-/= rwx 檔案 | [ u/g/o/a ] | 含義 | | :---------- | --------------------------------------------------------- | | u | user 表示該檔案的所有者 | | g | group 表示與該檔案的所有者屬於同一組( group )者,即使用者組 | | o | other 表示其他以外的人 | | a | all 表示這三者皆是 | | [ +-= ] | 含義 | | ------- | -------- | | + | 增加許可權 | | - | 撤銷許可權 | | = | 設定許可權 | | rwx | 含義 | | ---- | ------------------------------------------------------------ | | r | read 表示可讀取,對於一個目錄,如果沒有r許可權,那麼就意味著不能通過ls檢視這個目錄的內容。 | | w | write 表示可寫入,對於一個目錄,如果沒有w許可權,那麼就意味著不能在目錄下建立新的檔案。 | | x | excute 表示可執行,對於一個目錄,如果沒有x許可權,那麼就意味著不能通過cd進入這個目錄。 | **數字法:“rwx” 這些許可權也可以用數字來代替** | 字母 | 說明 | | ---- | ---------------------------- | | r | 讀取許可權,數字代號為 "4" | | w | 寫入許可權,數字代號為 "2" | | x | 執行許可權,數字代號為 "1" | | - | 不具任何許可權,數字代號為 "0" | 如執行:chmod u=rwx,g=rx,o=r filename 就等同於:chmod u=7,g=5,o=4 filename > 注意:如果想遞迴所有目錄加上相同許可權,**需要加上引數“ -R ”**。 如:**chmod 777 test/ -R** 遞迴 test 目錄下所有檔案加 777 許可權 [windows 遞迴修改檔案許可權](https://blog.csdn.net/hfhwfw161226/article/details/99300340?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare): `Icacls ${dirName} /grant ${userName}:F` 賦予test使用者d:/workspace目錄下所有檔案的完全訪問許可權 `Icacls d:/workspace /grant test:F` ### [grep](https://man.linuxde.net/grep) (Global Regular Expression Print) Linux系統中grep命令是一種強大的文字搜尋工具,grep允許對文字檔案進行模式查詢。如果找到匹配模式, grep列印包含模式的所有行。[每日一個linux-grep](https://www.cnblogs.com/peida/archive/2012/12/17/2821195.html) | 選項 | 含義 | | :--- | ---------------------------------------- | | -v | 顯示不包含匹配文字的所有行(相當於求反) | | -n | 顯示匹配行及行號 | | -i | 忽略大小寫 | | -c | 輸出匹配到的個數 | | -n | 輸出匹配內容,同時顯示行數 | | -v | 輸出除匹配外的內容 | ```shell λ cat -n 1.txt 1 sdfsdfsdfsd 2 sdfsdfs 3 sdfsdf 4 sfsd 5 asaa 6 aaa 7 8 AAA 9 CBB 10 CCC 11 CBB 12 1df 13 sdfsd 14 EOF 15 jsldf C:\Users\asus\Desktop\review\testlinuk λ ls 1.txt 2.txt 3.txt tes1/ tes2/ test.tart.gz C:\Users\asus\Desktop\review\testlinuk λ grep -c sdf 1.txt 4 C:\Users\asus\Desktop\review\testlinuk λ grep -n sdf 1.txt 1: sdfsdfsdfsd 2: sdfsdfs 3: sdfsdf 13:sdfsd ``` ### **ps ** Process Status **linux上程序有5種狀態:** 1. 執行(正在執行或在執行佇列中等待) 2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號) 3. 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生) 4. 僵死(程序已終止, 但程序描述符存在, 直到父程序呼叫wait4()系統呼叫後釋放) 5. 停止(程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行) **ps工具標識程序的5種狀態碼:** D 不可中斷 uninterruptible sleep (usually IO) R 執行 runnable (on run queue) S 中斷休眠 sleeping T 停止 traced or stopped Z 僵死 a defunct (”zombie”) process 常用引數 | a | 顯示所有程序 | | ---- | ---------------------------- | | -a | 顯示同一終端下的所有程式 | | -A | 顯示所有程序 | | c | 顯示程序的真實名字 | | -e | 等於-A | | e | 顯示環境變數 | | f | 顯示程式間的關係 | | -H | 顯示樹狀結構 | | -aux | 顯示所有包含其他使用者的程序 | | | | ```shell [root@localhost test6]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 17398 17394 0 75 0 - 16543 wait pts/0 00:00:00 bash 4 R 0 17469 17398 0 77 0 - 15877 - pts/0 00:00:00 ps ``` **列出目前所有的正在記憶體當中的程式** > ps aux ```bash root@localhost test6]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 10368 676 ? Ss Nov02 0:00 init [3] root 2 0.0 0.0 0 0 ? S< Nov02 0:01 [migration/0] root 3 0.0 0.0 0 0 ? SN Nov02 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0 ? S< Nov02 0:01 [migration/1] root 5 0.0 0.0 0 0 ? SN Nov02 0:00 [ksoftirqd/1] root 6 0.0 0.0 0 0 ? S< Nov02 29:57 [events/0] root 7 0.0 0.0 0 0 ? S< Nov02 0:00 [events/1] ``` - USER:該 process 屬於那個使用者賬號的 - PID :該 process 的號碼 - %CPU:該 process 使用掉的 CPU 資源百分比 - %MEM:該 process 所佔用的實體記憶體百分比 - VSZ :該 process 使用掉的虛擬記憶體量 (Kbytes) - RSS :該 process 佔用的固定的記憶體量 (Kbytes) - TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程式,若為 pts/0 等等的,則表示為由網路連線進主機的程式。 - STAT:該程式目前的狀態,主要的狀態有 - R :該程式目前正在運作,或者是可被運作 - S :該程式目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。 - T :該程式目前正在偵測或者是停止了 - Z :該程式應該已經終止,但是其父程式卻無法正常的終止他,造成 zombie (疆屍) 程式的狀態 - START:該 process 被觸發啟動的時間 - TIME :該 process 實際使用 CPU 運作的時間 - COMMAND:該程式的實際指令 **有一個指令碼執行時間可能超過2天,如何做才能使其不間斷的執行,而且還可以隨時觀察指令碼執行時的輸出資訊?** 答:使用screen工具 ### **awk** 參考[阮一峰-awk 入門教程](http://www.ruanyifeng.com/blog/2018/11/awk.html) [`awk`](https://en.wikipedia.org/wiki/AWK)是處理文字檔案的一個應用程式,幾乎所有 Linux 系統都自帶這個程式。 它依次處理檔案的每一行,並讀取裡面的每一個欄位。對於日誌、CSV 那樣的每行格式相同的文字檔案,`awk`可能是最方便的工具, `awk`其實不僅僅是工具軟體,還是一種程式語言 ```bash # 格式 $ awk 動作 檔名 # 示例 $ awk '{print $0}' demo.txt ``` `demo.txt`是`awk`所要處理的文字檔案。前面單引號內部有一個大括號,裡面就是每一行的處理動作`print $0`。其中,`print`是列印命令,`$0`代表當前行,因此上面命令的執行結果,就是把每一行原樣打印出來 **變數** `$ + 數字`表示某個欄位 變數`NF`表示當前行有多少個欄位,因此`$NF`就代表最後一個欄位。 ```bash $ echo 'this is a test' | awk '{print $NF}' test ``` 變數`NR`表示當前處理的是第幾行。 ```bash $ awk -F ':' '{print NR ") " $1}' demo.txt 1) root 2) daemon 3) bin 4) sys 5) sync ``` **條件** ```bash $ awk '條件 動作' 檔名 ``` ```bash $ awk -F ':' '/usr/ {print $1}' demo.txt root daemon bin sys ``` `print`命令前面是一個正則表示式,只輸出包含`usr`的行 ```bash # 輸出奇數行 $ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt root bin sync ``` 輸出第一個欄位的第一個字元大於`m`的行,否則輸出‘---’ ```bash $ awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt root --- --- sys sync ``` 檢視特定IP的日誌 > cat ip.log | awk -F '\t' '($1~/112.15.5.36/){print $0}' 檢視訪問量前10的IP > awk '{print &1}' 17.log | sort | uniq -c | sort -nr | head -n 10 [awk 命令教程](http://www.runoob.com/linux/linux-comm-awk.html) [sort 命令](http://www.runoob.com/linux/linux-comm-sort.html) [[linux下使用awk命令按時間段篩選日誌](https://segmentfault.com/a/1190000011626977)](https://segmentfault.com/a/1190000011626977) 參考[awk 常用命令](https://zhuanlan.zhihu.com/p/81123584) [linux中的awk命令詳解](https://blog.csdn.net/jin970505/article/details/79056457) ### sed命令 sed行檔案編輯命令,編輯檔案以行為單位 > sed [引數] '[動作]<匹配條件>' [檔名] - -i 標識對檔案進行行編輯 - a\ 在匹配到的內容下一行增加內容 `sed -i 3a\nihao hello world test.txt` - i\ 在匹配到的內容上一行增加內容 - d 刪除匹配到的內容 - s 替換匹配到的內容 - **住**:**上面的動作只有在加上引數-i的時候才會生效** 命令格式: > sed -i '行號s#原內容#替換後的內容#列號' # 只替換第一個匹配到的項,替換所有內容在尾部加g > `sed -n '5,10p' mywork.log` 檢視5行到10行的日誌。 [日誌分析檢視——grep,sed,sort,awk運用](https://blog.csdn.net/UltraNi/article/details/6750434) ## 網路相關 **使用iptables 寫一條規則:把來源IP為192.168.1.101訪問本機80埠的包直接拒絕** > iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT **要想把iptable的規則儲存到一個檔案中如何做?如何恢復?** > iptables-save > 1.ipt 使用iptables-restore反重定向回來: > iptables-restore < 1.ipt **rsync 同步命令中,下面兩種方式有什麼不同呢?** ```text (1) rsync -av /dira/ ip:/dirb/ #通過ssh方式同步 (2) rsync -av /dira/ ip::dirb #通過rsync服務的方式同步 ``` **rsync 同步時,如果要同步的源中有軟連線,如何把軟連線的目標檔案或者目錄同步?** 答:同步原始檔需要加-L選項 **rsync 同步資料時,如何過濾出所有.txt的檔案不同步?** 答:加上--exclude選項: > --exclude=“*.txt” **rsync同步資料時,如果目標檔案比原始檔還新,則忽略該檔案,如何做?** 答:保留更新使用-u或者--update選項 **使用rsync同步資料時,假如我們採用的是ssh方式,並且目標機器的sshd埠並不是預設的22埠,那我們如何做?** > ```text > rsync "--rsh=ssh -p 10022"或者rsync -e "ssh -p 10022" > ``` **rsync同步時,如何刪除目標資料多出來的資料,即源上不存在,但目標卻存在的檔案或者目錄?** 答:加上--delete選項 **有一天你突然發現公司網站訪問速度變的很慢很慢,你該怎麼辦呢?** (伺服器可以登陸,提示:你可以從系統負載和網絡卡流量入手) 答:可以從兩個方面入手分析:分析系統負載,使用w命令或者uptime命令檢視系統負載,如果負載很高,則使用top命令檢視CPU,MEM等佔用情況,要麼是CPU繁忙,要麼是記憶體不夠,如果這二者都正常,再去使用sar命令分析網絡卡流量,分析是不是遭到了攻擊。一旦分析出問題的原因,採取對應的措施解決,如決定要不要殺死一些程序,或者禁止一些訪問等。 **在Linux下如何指定dns伺服器,來解析某個域名?** ```text # 使用dig命令:dig @DNSip http://domain.com dig @8.8.8.8 www.baidu.com#使用谷歌DNS解析百度 ``` **[tcpdump抓包工具](https://juejin.im/post/5e64571bf265da57104393a1)** > $ tcpdump -i eth0 -nn -s0 -v port 80 -w test.pcap - **-i** : 選擇要捕獲的介面,通常是乙太網卡或無線網絡卡,也可以是 `vlan` 或其他特殊介面。如果該系統上只有一個網路介面,則無需指定。 - **-nn** : 單個 n 表示不解析域名,直接顯示 IP;兩個 n 表示不解析域名和埠。這樣不僅方便檢視 IP 和埠號,而且在抓取大量資料時非常高效,因為域名解析會降低抓取速度。 - **-s0** : tcpdump 預設只會擷取前 `96` 位元組的內容,要想擷取所有的報文內容,可以使用 `-s number`, `number` 就是你要擷取的報文位元組數,如果是 0 的話,表示擷取報文全部內容。 - **-v** : 使用 `-v`,`-vv` 和 `-vvv` 來顯示更多的詳細資訊,通常會顯示更多與特定協議相關的資訊。 - `port 80` : 這是一個常見的埠過濾器,表示僅抓取 `80` 埠上的流量,通常是 HTTP - `host 10.10.1.1`: host過濾器, 抓取特定目的地和源IP地址的流量,也可以使用 `src` 或 `dst` 只抓取源或目的地 - **-w**: 把資料報文輸出到檔案 - **-p** : 不讓網路介面進入混雜模式。預設情況下使用 tcpdump 抓包時,會讓網路介面進入混雜模式。一般計算機網絡卡都工作在非混雜模式下,此時網絡卡只接受來自網路埠的目的地址指向自己的資料。當網絡卡工作在混雜模式下時,網絡卡將來自介面的所有資料都捕獲並交給相應的驅動程式。如果裝置接入的交換機開啟了混雜模式,使用 `-p` 選項可以有效地過濾噪聲。 - **-e** : 顯示資料鏈路層資訊。預設情況下 tcpdump 不會顯示資料鏈路層資訊,使用 `-e` 選項可以顯示源和目的 MAC 地址,以及 VLAN tag 資訊 如果想實時將抓取到的資料通過管道傳遞給其他工具來處理,需要使用 `-l` 選項來開啟行緩衝模式(或使用 `-c` 選項來開啟資料包緩衝模式)。使用 `-l` 選項可以將輸出通過立即傳送給其他命令,其他命令會立即響應。 > tcpdump -i eth0 -s0 -l port 80 | grep 'Server:' ### 硬連結和軟連線的本質區別 參考:[理解 Linux 的硬連結與軟連結](https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html) [5分鐘讓你明白“軟連結”和“硬連結”的區別](https://www.jianshu.com/p/dde6a01c4094) 1. **硬連結** 檔案都有檔名與資料,這在 Linux 上被分成兩個部分:使用者資料 (user data) 與元資料 (metadata)。使用者資料,即檔案資料塊 (data block),資料塊是記錄檔案真實內容的地方;而元資料則是檔案的附加屬性,如檔案大小、建立時間、所有者等資訊。在 Linux 中,元資料中的 inode 號(inode 是檔案元資料的一部分但其並不包含檔名,inode 號即索引節點號)才是檔案的唯一標識而非檔名。檔名僅是為了方便人們的記憶和使用,系統或程式通過 inode 號尋找正確的檔案資料塊。下圖展示了程式通過檔名獲取檔案內容的過程。 ![圖 1. 通過檔名開啟檔案](https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/image001.jpg) 由於硬連結是有著相同 inode 號僅檔名不同的檔案,因此硬連結存在以下幾點特性: - 檔案有相同的 inode 及 data block; - 只能對已存在的檔案進行建立; - 不能交叉檔案系統進行硬連結的建立; - 不能對目錄進行建立,只可對檔案建立; - 刪除一個硬連結檔案並不影響其他有相同 inode 號的檔案。 2. **軟連線** 軟連結與硬連結不同,若檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,則該檔案就是軟連線。軟連結就是一個普通檔案,只是資料塊內容有點特殊。軟連結有著自己的 inode 號以及使用者資料塊。因此軟連結的建立與使用沒有類似硬連結的諸多限制: - 軟連線有自己的檔案屬性及許可權 - 可對不存在的檔案或目錄建立軟連結 - 軟連結可交叉檔案系統 - 軟連結可對檔案或目錄建立 - 建立軟連結時,連結計數i_nlink不會增加 - 刪除軟連結並不影響被指向的檔案,但若被指向的原檔案被刪除,則相關軟連線被稱為死連結(即 dangling link,若被指向路徑檔案被重新建立,死連結可恢復為正常的軟連結)。 ![圖 2. 軟連結的訪問](https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/image002.jpg) ``` 軟連線格式: ln -s 原始檔 連結檔案 硬連結格式: ln 原始檔 連結檔案 ``` 小結: - 硬連結: 與普通檔案沒什麼不同,**可以理解為引用**,新增一個別名,引用計數+1檔案的inode都一樣,指向同一個資料區塊 - 軟連結:data block中儲存了其代表的檔案的絕對路徑,是另外一種檔案,有自己的inode,在硬碟中有獨立的區塊,訪問時替換自身路徑 ## 參考資料和書籍 1. 《Linux基礎千錘百煉》-- [駿馬金龍](https://www.junmajinlong.com) 2. [Linux工具快速教程-參考教程命令](https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/sar.html) ## Linux面試題彙總 [46個Linux面試常見問題送給你](https://www.cnblogs.com/passzhang/p/855275