軟硬鏈接、文件刪除原理、linux中的三種時間、chkconfig優化


第1章 軟硬鏈接

1.1 硬鏈接

1.1.1 含義

多個文件擁有相同的inode號碼

硬鏈接即文件的多個入口

1.1.2 作用

防止你誤刪除文件

1.1.3 如何創建硬鏈接

ln 命令,前面是源文件 后面是創建的鏈接文件

[root@znix clsn]# ln clsn.txt clsn.txt-hard

       查看兩文件的inode號相同。

[root@znix clsn]# ls -lhi clsn.txt clsn.txt-hard

151273 -rw-r--r-- 2 root root 607 Aug 30 09:13 clsn.txt

151273 -rw-r--r-- 2 root root 607 Aug 30 09:13 clsn.txt-hard

1.2 軟連接

1.2.1 含義

為了快捷,省事,方便使用

軟連接中存放的是源文件的位置

1.2.2 創建軟連接

使用ln -s 命令創建軟連接

[root@znix clsn]# ln -s clsn.txt clsn.txt-soft

       查看軟硬鏈接的inode號不相同

       但是同時指向的是同一文件

[root@znix clsn]# ll -i clsn*

151273 -rw-r--r-- 2 root root 607 Aug 30 09:13 clsn.txt

132910 -rw-r--r-- 1 root root 607 Aug 30 09:14 clsn.txt.bak

151273 -rw-r--r-- 2 root root 607 Aug 30 09:13 clsn.txt-hard

132951 lrwxrwxrwx 1 root root  13 Aug 30 09:22 clsn.txt-soft -> clsn.txt

1.3 軟連接與硬鏈接的區別

 

1.3.1 含義

       軟鏈接:

              軟連接相當於快捷方式

              里面存放的是源文件的位置

       硬鏈接:

              在同一個分區中,多個文件擁有相同的inode

1.3.2 創建方式不同

              ln 創建硬鏈接

              ln -s 軟連接

1.3.3 不同的特點

1)軟連接可以隨意創建

2)不能對目錄創建硬鏈接

3)對文件創建硬鏈接可以防止文件被誤刪除

1.3.4 如何刪除

1)刪除文件的硬鏈接,文件可以繼續使用

   2)只有把這個文件的所有硬鏈接都刪除才可

3)只刪除源文件軟連接無法使用

   4)只刪除軟連接對文件沒有影響

第2章 文件刪除原理

2.1 徹底刪除一個文件

1.硬鏈接數為0 與這個文件有關的所有硬鏈接都被刪除。

a)       使用rm目錄進行刪除

2.     進程調用數為0,沒有人在使用這個文件才能釋放磁盤空間。

a)       使用lsof 查看誰在使用這文件

b)      重啟對應的軟件/服務就能釋放磁盤

2.2 查看某個文件是否總有人在用

使用lsof命令可以列出所有正在使用的文件和相應的進程

[root@znix ~]# lsof /var/log/secure

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME

rsyslogd 1262 root    4w   REG    8,3     1927 270856 /var/log/secure

[root@znix ~]# lsof |grep message

rsyslogd  1262      root    1w      REG                8,3     1044     270855 /var/log/messages

2.3 重啟對應的軟件/服務

找到軟件對應的管理地址,讓軟件重啟,釋放空間。

[root@znix ~]# /etc/init.d/rsyslog

Usage: /etc/init.d/rsyslog {start|stop|restart|condrestart|try-restart|reload|force-reload|status}

2.4 磁盤空間滿了(三種情況

       inode滿了……查找出系統目錄比較大(1M)

       block滿了……使用du -sh /* 一層一層找,把較大的文件刪除

       硬鏈接數為0,進程調用數不為0

            使用  lsof |grep delete 查看占用的文件

2.5 故障案例

沒有被徹底刪除-硬鏈接數為0,進程調用數不為零

2.5.1 環境

/var/log/message中放入大量數據

seq 100000000 >>/var/log/messages

2.5.2 查看此時此刻磁盤使用情況

[root@znix apache]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  3.9G  3.7G  59% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

2.5.3 刪除文件

[root@znix apache]# \rm -f /var/log/messages

2.5.4 檢查空間沒有被釋放

[root@znix apache]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  3.9G  3.7G  59% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

2.5.5 查看被刪除(硬鏈接數為0)但是還被進程調用的文件

[root@znix apache]# lsof |grep delete

rsyslogd  1168      root    1w      REG                8,3 889335632     259962 /var/log/messages (deleted)

2.5.6 重啟對應的服務

[root@znix apache]# /etc/init.d/rsyslog restart

Shutting down system logger:                               [  OK  ]

Starting system logger:                                    [  OK  ]

       查看磁盤空間

[root@znix apache]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       8.8G  1.5G  6.9G  18% /

tmpfs           238M     0  238M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

第3章 找出某個文件的其他的硬鏈接 

使用find命令 -inum參數找inode號碼,找到相同的inode 互為硬鏈接。

[root@znix ~]# ls -lhi  test.txt

260141 -rw-r--r--. 2 root root 265 Aug 29 19:16 test.txt

[root@znix ~]# find /* -type f -inum 260141

/root/test.txt

/root/test.txt-hard

第4章 三種時間戳

4.1 含義

Modify   mtime修改時間 (最常用) 文件的內容 增加 刪除 修改改變

Change   ctime屬性變更時間        文件屬性發生改變時更改

Access   atime訪問時間            查看文件的時間 (只有文件內容有修改時才會改變)

4.2 使用stat命令查看文件的信息

[root@znix ~]# stat clsn.txt

  File: `clsn.txt'

  Size: 237         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 16976       Links: 2

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-08-28 11:45:26.734849384 +0800

Modify: 2017-08-28 11:45:26.734849384 +0800

Change: 2017-08-30 11:30:27.783364422 +0800

4.3 修改mtime&change

[root@znix ~]# echo "123">>clsn.txt

[root@znix ~]# stat clsn.txt

  File: `clsn.txt'

  Size: 241         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 16976       Links: 2

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-08-28 11:45:26.734849384 +0800

Modify: 2017-08-30 11:40:57.384368932 +0800

Change: 2017-08-30 11:40:57.384368932 +0800

4.4 修改ctime (屬性變更時間)

[root@znix ~]# ln clsn.txt  clsn.txt-hard

[root@znix ~]# stat clsn.txt

  File: `clsn.txt'

  Size: 241         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 16976       Links: 3

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-08-28 11:45:26.734849384 +0800

Modify: 2017-08-30 11:40:57.384368932 +0800

Change: 2017-08-30 11:42:32.981364780 +0800

4.5 atime修改

[root@znix ~]# tail -1 clsn.txt

123

[root@znix ~]# stat clsn.txt

  File: `clsn.txt'

  Size: 241         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d  Inode: 16976       Links: 3

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-08-30 11:43:15.288357930 +0800

Modify: 2017-08-30 11:40:57.384368932 +0800

Change: 2017-08-30 11:42:32.981364780 +0800

 

第5章 chkconfig命令相關

chkconfig命令實際上控制的是/etc/rc3.d/3運行模式下)下的軟連接。通過不通的軟連接,實現不通的控制。實際受/etc/init.d/下腳本的關系。

5.1 執行chkconfig iptables on & chkconfig iptables off之后發生了什么?

執行chkconfig iptables on/etc/rc3.d/下的/etc/init.d/iptables改為S08iptables

[root@znix rc3.d]# chkconfig iptables on

[root@znix rc3.d]# chkconfig |grep ipt

iptables       0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@znix rc3.d]# ls -l /etc/rc3.d/ |grep ipt

lrwxrwxrwx  1 root root 18 Aug 30 12:03 S08iptables -> ../init.d/iptables

       執行chkconfig iptables off /etc/rc3.d/下的/etc/init.d/iptables軟連接改為K92iptables

[root@znix rc3.d]# chkconfig iptables off

[root@znix rc3.d]# chkconfig |grep ipt

iptables       0:off   1:off   2:off   3:off   4:off   5:off   6:off

[root@znix rc3.d]# ls -l /etc/rc3.d/ |grep ipt

lrwxrwxrwx  1 root root 18 Aug 30 12:04 K92iptables -> ../init.d/iptables

iptables 開機自啟動    軟連接   S開頭

iptables 開機不自啟動 軟連接   K開頭

5.2 讓一個軟件開機自啟動

1)把腳本放入/etc/rc.local

2)通過chkconfig 管理命令或腳本,讓他開機自啟動

5.3 如何讓一個服務或命令通過chkconfig管理

5.3.1 腳本必須放在/etc/init.d/目錄下面

[root@znix rc3.d]# echo "hostname" > /etc/init.d/clsnd

5.3.2 必須寫出chkconfig格式

寫出chkconfig 才能被chkconfig管理

hkconfig:         2345       99       99

默認在哪幾個運行級別啟動 開機順序 關機順序

自己創建的開機順序一般寫99 99為最后一個

[root@znix rc3.d]# cat /etc/init.d/clsnd

#!/bin/sh

#

#

# chkconfig: 2345 99 99

#

# description: print hostname

hostname

5.3.3 給這個腳本添加上執行的權限

使用chmod命令修改文件權限

需要有可執行的權限,不然無法執行

[root@znix rc3.d]# chmod +x /etc/init.d/clsnd

[root@znix rc3.d]# ll /etc/init.d/clsnd

-rwxr-xr-x 1 root root 9 Aug 30 12:22 /etc/init.d/clsnd

5.3.4 添加腳本到chkconfig管理

[root@znix rc3.d]# chkconfig --add clsnd

5.3.5 查看狀態

改為開機自啟動

[root@znix rc3.d]# chkconfig |grep old

clsnd        0:off   1:off   2:on    3:on    4:on    5:on    6:off

5.3.6 查看/etc/rc3.d/目錄生成相對應的軟連接

[root@znix rc3.d]# ls -l /etc/rc3.d/ |grep old

lrwxrwxrwx  1 root root 17 Aug 30 12:38 S99clsnd -> ../init.d/clsnd


免責聲明!

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



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