狂神說linux筆記:基本操作


Linux介紹

Linux的概述本文就不贅述了,如果想仔細了解的小伙伴可以百度Linux的歷史或者看看狂神的原文。本文主要寫linux的操作過程知識點。

狂神的原文如下:

https://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&mid=2247483879&idx=1&sn=96181b566c35679e48db6bd26fb59a2c&scene=19#wechat_redirect

此外,狂神的原文是再阿里雲上操作的,我實在vritualBox/VMware上操作的,幾乎是一樣沒差的。vritualBox/VMware的下載百度一下即可。

系統選擇Centos7,安裝過程百度上也有很多。

開機

開機會啟動許多程序。它們在Windows叫做"服務"(service),在Linux就叫做"守護進程"(daemon)。


守護進程

守護進程是提供基本操作系統下可能無法使用的多種功能的服務。其主要任務是監聽服務請求,同時對這些請求采取行動。服務完成后,它將斷開連接並等待進一步的請求。守護進程是脫離於終端並且在后台運行的進程,脫離終端是為了避免在執行的過程中的信息在終端上顯示,並且進程也不會被任何終端所產生的終端信息所打斷。

守護進程一般的生命周期是系統啟動到系統停止運行。

我們用daemon來做什么事情呢?我們可以用守護進程監控一個進程的運行,如果發現其被kill了,那就重新啟動進程。簡單來說,就是用來守護其它進程。

做法也很簡單,首先生成這個守護進程,在這個進程中啟動個定時器或者while循環:讓其不斷檢測另外一個進程是否還在運行,如果沒有在運行那就啟動之。當然,也可以不用檢測,直接不斷的循環去啟動即可! 如果已經正常啟動,再次去啟動就會失敗,這無所謂。如果已經kill,則立即將之啟動。


開機成功后,它會顯示一個文本登錄界面,這個界面就是我們經常看到的登錄界面,在這個登錄界面中會提示用戶輸入用戶名,而用戶輸入的用戶將作為參數傳給login程序來驗證用戶的身份,密碼是不顯示的,輸完回車即可!

一般來說,用戶的登錄方式有三種:

  • 命令行登錄
  • ssh登錄
  • 圖形界面登錄

最高權限賬戶為 root,可以操作一切!

關機

在linux領域內大多用在服務器上,很少遇到關機的操作。畢竟服務器上跑一個服務是永無止境的,除非特殊情況下,不得已才會關機。

關機指令為:shutdown ;

sync # 將數據由內存同步到硬盤中。

shutdown # 關機指令,你可以man shutdown 來看一下幫助文檔。例如你可以運行如下命令關機:

shutdown –h 10 # 這個命令告訴大家,計算機將在10分鍾后關機

shutdown –h now # 立馬關機

shutdown –h 20:25 # 系統會在今天20:25關機

shutdown –h +10 # 十分鍾后關機

shutdown –r now # 系統立馬重啟

shutdown –r +10 # 系統十分鍾后重啟

reboot # 就是重啟,等同於 shutdown –r now

halt # 關閉系統,等同於shutdown –h now 和 poweroff

最后總結一下,不管是重啟系統還是關閉系統,首先要運行 sync 命令,把內存中的數據寫到磁盤中。

系統目錄介紹

可以通過ls查看系統下面的目錄

  • /bin:bin是Binary的縮寫, 這個目錄存放着最經常使用的命令。
  • /boot: 這里存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件。
  • /dev : dev是Device(設備)的縮寫, 存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。
  • /etc: 這個目錄用來存放所有的系統管理所需要的配置文件和子目錄。
  • /home:用戶的主目錄,在Linux中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。
  • /lib:這個目錄里存放着系統最基本的動態連接共享庫,其作用類似於Windows里的DLL文件。
  • /lost+found:這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些文件。
  • /media:linux系統會自動識別一些設備,例如U盤、光驅等等,當識別后,linux會把識別的設備掛載到這個目錄下。
  • /mnt:系統提供該目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然后進入該目錄就可以查看光驅里的內容了。
  • /opt:這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的。
  • /proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。
  • /root:該目錄為系統管理員,也稱作超級權限者的用戶主目錄。
  • /sbin:s就是Super User的意思,這里存放的是系統管理員使用的系統管理程序。
  • /srv:該目錄存放一些服務啟動之后需要提取的數據。
  • /sys:這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs 。
  • /tmp:這個目錄是用來存放一些臨時文件的。
  • /usr:這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄。
  • /usr/bin: 系統用戶使用的應用程序。
  • /usr/sbin: 超級用戶使用的比較高級的管理程序和系統守護程序。
  • /usr/src: 內核源代碼默認的放置目錄。
  • /var:這個目錄中存放着在不斷擴充着的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日志文件。
  • /run:是一個臨時文件系統,存儲系統啟動以來的信息。當系統重啟時,這個目錄下的文件應該被刪掉或清除。

目錄管理

絕對路徑和相對路徑

我們知道Linux的目錄結構為樹狀結構,最頂級的目錄為根目錄 /

其他目錄通過掛載可以將它們添加到樹中,通過解除掛載可以移除它們。

在開始本教程前我們需要先知道什么是絕對路徑與相對路徑。

絕對路徑:

路徑的寫法,由根目錄 / 寫起,例如:/usr/share/doc 這個目錄。

相對路徑:

路徑的寫法,不是由 / 寫起,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成:cd ../man 這就是相對路徑的寫法啦!

處理目錄的常用命令

  • ls: 列出目錄
  • cd:切換目錄
  • pwd:顯示目前的目錄
  • mkdir:創建一個新的目錄
  • rmdir:刪除一個空的目錄
  • cp: 復制文件或目錄
  • rm: 移除文件或目錄
  • mv: 移動文件與目錄,或修改文件與目錄的名稱

你可以使用 man [命令] 來查看各個命令的使用文檔,如 :man cp。

ls (列出目錄)

在Linux系統當中, ls 命令可能是最常被運行的。

語法:

[root@www ~]# ls [-aAdfFhilnrRSt] 目錄名稱

選項與參數:

-a :全部的文件,連同隱藏文件( 開頭為 . 的文件) 一起列出來(常用)

-l :長數據串列出,包含文件的屬性與權限等等數據;(常用)

將目錄下的所有文件列出來(含屬性與隱藏檔)

[root@www ~]# ls -al ~

補充:

ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改時間排序
ls -S 以文件大小排序
ls -h 以易讀大小顯示

cd (切換目錄)

cd是Change Directory的縮寫,這是用來變換工作目錄的命令。

語法:

cd [相對路徑或絕對路徑]

測試:

# 切換到用戶目錄下
[root@kuangshen /]# cd home  

# 使用 mkdir 命令創建 kuangstudy 目錄
[root@kuangshen home]# mkdir kuangstudy

# 進入 kuangstudy 目錄
[root@kuangshen home]# cd kuangstudy

# 回到上一級
[root@kuangshen kuangstudy]# cd ..

# 回到根目錄
[root@kuangshen kuangstudy]# cd /

# 表示回到自己的家目錄,亦即是 /root 這個目錄
[root@kuangshen kuangstudy]# cd ~

pwd ( 顯示目前所在的目錄 )

pwd 是 Print Working Directory 的縮寫,也就是顯示目前所在目錄的命令。

[root@kuangshen kuangstudy]#pwd [-P]

選項與參數:-P :顯示出確實的路徑,而非使用連接(link) 路徑。

測試:

# 單純顯示出目前的工作目錄
[root@kuangshen ~]# pwd
/root

# 如果是鏈接,要顯示真實地址,可以使用 -P參數
[root@kuangshen /]# cd bin
[root@kuangshen bin]# pwd -P
/usr/bin

mkdir (創建新目錄)

如果想要創建新的目錄的話,那么就使用mkdir (make directory)吧。

mkdir [-mp] 目錄名稱

選項與參數:

-m :配置文件的權限喔!直接配置,不需要看默認權限 (umask) 的臉色~

-p :幫助你直接將所需要的目錄(包含上一級目錄)遞歸創建起來!

測試:

# 進入我們用戶目錄下
[root@kuangshen /]# cd /home

# 創建一個 test 文件夾
[root@kuangshen home]# mkdir test

# 創建多層級目錄
[root@kuangshen home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory  # <== 沒辦法直接創建此目錄啊!

# 加了這個 -p 的選項,可以自行幫你創建多層目錄!
[root@kuangshen home]# mkdir -p test1/test2/test3/test4

# 創建權限為 rwx--x--x 的目錄。
[root@kuangshen home]# mkdir -m 711 test2
[root@kuangshen home]# ls -l
drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
drwx--x--x 2 root root  4096 Mar 12 21:58 test2

rmdir ( 刪除空的目錄 )

語法:

rmdir [-p] 目錄名稱

選項與參數:-p :連同上一級『空的』目錄也一起刪除

測試:

# 看看有多少目錄存在?
[root@kuangshen home]# ls -l
drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
drwx--x--x 2 root root  4096 Mar 12 21:58 test2

# 可直接刪除掉,沒問題
[root@kuangshen home]# rmdir test

# 因為尚有內容,所以無法刪除!
[root@kuangshen home]# rmdir test1
rmdir: failed to remove ‘test1’: Directory not empty

# 利用 -p 這個選項,立刻就可以將 test1/test2/test3/test4 依次刪除。
[root@kuangshen home]# rmdir -p test1/test2/test3/test4

注意:這個 rmdir 僅能刪除空的目錄,你可以使用 rm 命令來刪除非空目錄,后面我們會將學習!

cp ( 復制文件或目錄 )

語法:

[root@www ~]# cp [-adfilprsu] 來源檔(source) 目標檔(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory

選項與參數:

-a:相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)

-p:連同文件的屬性一起復制過去,而非使用默認屬性(備份常用);

-d:若來源檔為連結檔的屬性(link file),則復制連結檔屬性而非文件本身;

-r:遞歸持續復制,用於目錄的復制行為;(常用)

-f:為強制(force)的意思,若目標文件已經存在且無法開啟,則移除后再嘗試一次;

-i:若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)

-l:進行硬式連結(hard link)的連結檔創建,而非復制文件本身。

-s:復制成為符號連結檔 (symbolic link),亦即『捷徑』文件;

-u:若 destination 比 source 舊才升級 destination !

測試:

# 找一個有文件的目錄,我這里找到 root目錄
[root@kuangshen home]# cd /root
[root@kuangshen ~]# ls
install.sh
[root@kuangshen ~]# cd /home

# 復制 root目錄下的install.sh 到 home目錄下
[root@kuangshen home]# cp /root/install.sh /home
[root@kuangshen home]# ls
install.sh

# 再次復制,加上-i參數,增加覆蓋詢問?
[root@kuangshen home]# cp -i /root/install.sh /home
cp: overwrite ‘/home/install.sh’? y # n不覆蓋,y為覆蓋

rm ( 移除文件或目錄 )

語法:

rm [-fir] 文件或目錄

選項與參數:

-f :就是 force 的意思,忽略不存在的文件,不會出現警告信息;

-i :互動模式,在刪除前會詢問使用者是否動作

-r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!

測試:

# 將剛剛在 cp 的實例中創建的 install.sh刪除掉!
[root@kuangshen home]# rm -i install.sh
rm: remove regular file ‘install.sh’? y
# 如果加上 -i 的選項就會主動詢問喔,避免你刪除到錯誤的檔名!

# 盡量不要在服務器上使用 rm -rf /
mv  ( 移動文件與目錄,或修改名稱 )

語法:

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory

選項與參數:

-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;

-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!

-u :若目標文件已經存在,且 source 比較新,才會升級 (update)

測試:

# 復制一個文件到當前目錄
[root@kuangshen home]# cp /root/install.sh /home

# 創建一個文件夾 test
[root@kuangshen home]# mkdir test

# 將復制過來的文件移動到我們創建的目錄,並查看
[root@kuangshen home]# mv install.sh test
[root@kuangshen home]# ls
test
[root@kuangshen home]# cd test
[root@kuangshen test]# ls
install.sh

# 將文件夾重命名,然后再次查看!
[root@kuangshen test]# cd ..
[root@kuangshen home]# mv test mvtest
[root@kuangshen home]# ls
mvtest

基本屬性

看懂文件屬性

Linux系統是一種典型的多用戶系統,不同的用戶處於不同的地位,擁有不同的權限。為了保護系統的安全性,Linux系統對不同的用戶訪問同一文件(包括目錄文件)的權限做了不同的規定。

在Linux中我們可以使用ll或者ls –l命令來顯示一個文件的屬性以及文件所屬的用戶和組,如:

實例中,boot文件的第一個屬性用"d"表示。"d"在Linux中代表該文件是一個目錄文件。

在Linux中第一個字符代表這個文件是目錄、文件或鏈接文件等等:

當為[ d ]則是目錄

當為[ - ]則是文件;

若是[ l ]則表示為鏈接文檔 ( link file );

若是[ b ]則表示為裝置文件里面的可供儲存的接口設備 ( 可隨機存取裝置 );

若是[ c ]則表示為裝置文件里面的串行端口設備,例如鍵盤、鼠標 ( 一次性讀取裝置 )。

接下來的字符中,以三個為一組,且均為『rwx』 的三個參數的組合。

其中,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。

要注意的是,這三個權限的位置不會改變,如果沒有權限,就會出現減號[ - ]而已。

每個文件的屬性由左邊第一部分的10個字符來確定(如下圖):

從左至右用0-9這些數字來表示。

第0位確定文件類型,第1-3位確定屬主(該文件的所有者)擁有該文件的權限。第4-6位確定屬組(所有者的同組用戶)擁有該文件的權限,第7-9位確定其他用戶擁有該文件的權限。

其中:

第1、4、7位表示讀權限,如果用"r"字符表示,則有讀權限,如果用"-"字符表示,則沒有讀權限;

第2、5、8位表示寫權限,如果用"w"字符表示,則有寫權限,如果用"-"字符表示沒有寫權限;

第3、6、9位表示可執行權限,如果用"x"字符表示,則有執行權限,如果用"-"字符表示,則沒有執行權限。

對於文件來說,它都有一個特定的所有者,也就是對該文件具有所有權的用戶。

同時,在Linux系統中,用戶是按組分類的,一個用戶屬於一個或多個組。

文件所有者以外的用戶又可以分為文件所有者的同組用戶和其他用戶。

因此,Linux系統按文件所有者、文件所有者同組用戶和其他用戶來規定了不同的文件訪問權限。

在以上實例中,boot 文件是一個目錄文件,屬主和屬組都為 root。

修改文件屬性

chgrp:更改文件屬組

chgrp [-R] 屬組名 文件名

-R:遞歸更改文件屬組,就是在更改某個目錄文件的屬組時,如果加上-R的參數,那么該目錄下的所有文件的屬組都會更改。

chown:更改文件屬主,也可以同時更改文件屬組

chown [–R] 屬主名 文件名
chown [-R] 屬主名:屬組名 文件名

chmod:更改文件9個屬性

chmod [-R] xyz 文件或目錄

Linux文件屬性有兩種設置方法,一種是數字,一種是符號。

Linux文件的基本權限就有九個,分別是owner/group/others三種身份各有自己的read/write/execute權限。

先復習一下剛剛上面提到的數據:文件的權限字符為:『-rwxrwxrwx』, 這九個權限是三個三個一組的!其中,我們可以使用數字來代表各個權限,各權限的分數對照表如下:

r:4 w:2 x:1
每種身份(owner/group/others)各自的三個權限(r/w/x)分數是需要累加的,例如當權限為:[-rwxrwx---] 分數則是:

owner = rwx = 4+2+1 = 7

group = rwx = 4+2+1 = 7

others= --- = 0+0+0 = 0

chmod 770 filename

文件內容查看

概述

Linux系統中使用以下命令來查看文件的內容:

  • cat 由第一行開始顯示文件內容
  • tac 從最后一行開始顯示,可以看出 tac 是 cat 的倒着寫!
  • nl 顯示的時候,順道輸出行號!
  • more 一頁一頁的顯示文件內容
  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 只看頭幾行
  • tail 只看尾巴幾行

你可以使用 man [命令]來查看各個命令的使用文檔,如 :man cp。

cat 由第一行開始顯示文件內容

語法:

cat [-AbEnTv]

選項與參數:

-A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;

-b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!

-E :將結尾的斷行字節 $ 顯示出來;

-n :列印出行號,連同空白行也會有行號,與 -b 的選項不同;

-T :將 [tab] 按鍵以 ^I 顯示出來;

-v :列出一些看不出來的特殊字符

測試:

# 查看網絡配置: 文件地址 /etc/sysconfig/network-scripts/
[root@kuangshen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

tac

tac與cat命令剛好相反,文件內容從最后一行開始顯示,可以看出 tac 是 cat 的倒着寫!如:

[root@kuangshen ~]# tac /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=dhcp
DEVICE=eth0

nl 顯示行號

語法:

nl [-bnw] 文件

選項與參數:

-b :指定行號指定的方式,主要有兩種:-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);-b t :如果有空行,空的那一行不要列出行號(默認值);

-n :列出行號表示的方法,主要有三種:-n ln :行號在熒幕的最左方顯示;-n rn :行號在自己欄位的最右方顯示,且不加 0 ;-n rz :行號在自己欄位的最右方顯示,且加 0 ;

-w :行號欄位的占用的位數。

測試:

[root@kuangshen ~]# nl /etc/sysconfig/network-scripts/ifcfg-eth0
1DEVICE=eth0
2BOOTPROTO=dhcp
3ONBOOT=yes

more 一頁一頁翻動

在 more 這個程序的運行過程中,你有幾個按鍵可以按的:

空白鍵 (space):代表向下翻一頁;

Enter :代表向下翻『一行』;

/字串 :代表在這個顯示的內容當中,向下搜尋『字串』這個關鍵字;

:f :立刻顯示出檔名以及目前顯示的行數;

q :代表立刻離開 more ,不再顯示該文件內容。

b 或 [ctrl]-b :代表往回翻頁,不過這動作只對文件有用,對管線無用。

[root@kuangshen etc]# more /etc/csh.login
....(中間省略)....
--More--(28%) # 重點在這一行喔!你的光標也會在這里等待你的命令

less 一頁一頁翻動,以下實例輸出/etc/man.config文件的內容:

less運行時可以輸入的命令有:

空白鍵 :向下翻動一頁;

[pagedown]:向下翻動一頁;

[pageup] :向上翻動一頁;

/字串 :向下搜尋『字串』的功能;

?字串 :向上搜尋『字串』的功能;

n :重復前一個搜尋 (與 / 或 ? 有關!)

N :反向的重復前一個搜尋 (與 / 或 ? 有關!)

q :離開 less 這個程序;

[root@kuangshen etc]# more /etc/csh.login
....(中間省略)....
:   # 這里可以等待你輸入命令!

head 取出文件前面幾行

語法:

head [-n number] 文件

選項與參數:-n 后面接數字,代表顯示幾行的意思!

默認的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣:

[root@kuangshen etc]# head -n 20 /etc/csh.login

tail 取出文件后面幾行

語法:

tail [-n number] 文件

選項與參數:

-n :后面接數字,代表顯示幾行的意思

默認的情況中,顯示最后 10 行!若要顯示最后 20 行,就得要這樣:

[root@kuangshen etc]# tail -n 20 /etc/csh.login

拓展:Linux 鏈接概念

Linux 鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。

情況下,ln 命令產生硬鏈接。

硬連接

硬連接指通過索引節點來進行連接。在 Linux 的文件系統中,保存在磁盤分區中的文件不管是什么類型都給它分配一個編號,稱為索引節點號(Inode Index)。在 Linux 中,多個文件名指向同一索引節點是存在的。比如:A 是 B 的硬鏈接(A 和 B 都是文件名),則 A 的目錄項中的 inode 節點號與 B 的目錄項中的 inode 節點號相同,即一個 inode 節點對應兩個不同的文件名,兩個文件名指向同一個文件,A 和 B 對文件系統來說是完全平等的。刪除其中任何一個都不會影響另外一個的訪問。

硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連接。只刪除一個連接並不影響索引節點本身和其它的連接,只有當最后一個連接被刪除后,文件的數據塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。

軟連接

另外一種連接稱之為符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似於 Windows 的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的軟鏈接(A 和 B 都是文件名),A 的目錄項中的 inode 節點號與 B 的目錄項中的 inode 節點號不相同,A 和 B 指向的是兩個不同的 inode,繼而指向兩塊不同的數據塊。但是 A 的數據塊中存放的只是 B 的路徑名(可以根據這個找到 B 的目錄項)。A 和 B 之間是“主從”關系,如果 B 被刪除了,A 仍然存在(因為兩個是不同的文件),但指向的是一個無效的鏈接。

測試:

[root@kuangshen /]# cd /home
[root@kuangshen home]# touch f1 # 創建一個測試文件f1
[root@kuangshen home]# ls
f1
[root@kuangshen home]# ln f1 f2     # 創建f1的一個硬連接文件f2
[root@kuangshen home]# ln -s f1 f3   # 創建f1的一個符號連接文件f3
[root@kuangshen home]# ls -li       # -i參數顯示文件的inode節點信息
397247 -rw-r--r-- 2 root root     0 Mar 13 00:50 f1
397247 -rw-r--r-- 2 root root     0 Mar 13 00:50 f2
397248 lrwxrwxrwx 1 root root     2 Mar 13 00:50 f3 -> f1

從上面的結果中可以看出,硬連接文件 f2 與原文件 f1 的 inode 節點相同,均為 397247,然而符號連接文件的 inode 節點不同。

# echo 字符串輸出 >> f1 輸出到 f1文件
[root@kuangshen home]# echo "I am f1 file" >>f1
[root@kuangshen home]# cat f1
I am f1 file
[root@kuangshen home]# cat f2
I am f1 file
[root@kuangshen home]# cat f3
I am f1 file
[root@kuangshen home]# rm -f f1
[root@kuangshen home]# cat f2
I am f1 file
[root@kuangshen home]# cat f3
cat: f3: No such file or directory

通過上面的測試可以看出:當刪除原始文件 f1 后,硬連接 f2 不受影響,但是符號連接 f1 文件無效;

依此您可以做一些相關的測試,可以得到以下全部結論:

刪除符號連接f3,對f1,f2無影響;

刪除硬連接f2,對f1,f3也無影響;

刪除原文件f1,對硬連接f2沒有影響,導致符號連接f3失效;

同時刪除原文件f1,硬連接f2,整個文件會真正的被刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM