Linux 文件删除

         在工作中我们经常会遇见磁盘达到警戒线,提示报警之类的信息。然后我们进入系统对不必要的文件进行删除。但是我们发现有些时候我们删除了文件但是磁盘空间资源却没有被释放,这是什么原因呢?

      提前准备

(本机环境CeontOS 6.5 64 bit    IP:10.1.38.20

1、linux httpd 安装

[root@zhang~]# yum installhttpd -y

………………        #省略安装详情

[root@mode-6conf]# ll/etc/init.d/httpd    # 如果安装成功,那么会正常显示

-rwxr-xr-x1 root root 3371 Aug 25 01:53 /etc/init.d/httpd

2、启动httpd web 服务

[root@mode-6conf]# /etc/init.d/httpd start

Startinghttpd: httpd: Could not reliably determine the server's fully qualified domainname, using mode-6.5 for ServerName

                                                          [  OK  ]

         浏览器正常访问:

3、创建一个小的文件系统用于存放日志

 

[root@mode-6~]# dd if=/dev/zero of=/dev/sdc bs=8k count=10     #80k 大小

10+0records in

10+0records out

81920bytes (82 kB) copied, 0.00104354 s, 78.5 MB/s

[root@mode-6~]# ls -l/dev/sdc      # 查看是否创建成功

-rw-r--r--1 root root 81920 Nov 25 09:23 /dev/sdc

[root@mode-6~]# mkfs -t ext3/dev/sdc     # 文件系统格式化

mke2fs1.41.12 (17-May-2010)

/dev/sdcis not a block special device.

Proceedanyway? (y,n) y   # 选择是

Filesystemlabel=

OStype: Linux

Blocksize=1024 (log=0)

Fragmentsize=1024 (log=0)

Stride=0blocks, Stripe width=0 blocks

16inodes, 80 blocks

4blocks (5.00%) reserved for the super user

Firstdata block=1

1block group

8192blocks per group, 8192 fragments per group

16inodes per group

 

Writinginode tables: done                           

 

Filesystemtoo small for a journal

Writingsuperblocks and filesystem accounting information: done

 

Thisfilesystem will be automatically checked every 37 mounts or

180days, whichever comes first.  Use tune2fs-c or -i to override.

[root@mode-6~]# mkdir/app/log -p      # 创建新的目录用于存放httpd日志

[root@mode-6~]# mount/dev/sdc /app/log# 设备挂载

mount:/dev/sdc is not a block device (maybe try `-o loop'?)

[root@mode-6~]# mount-o loop  /dev/sdc /app/log/ #失败,再次挂载

[root@mode-6~]# df -h    # 查看磁盘使用率信息

Filesystem      Size Used Avail Use% Mounted on

/dev/sda3       7.2G 2.9G  4.0G  42% /

tmpfs           242M     0 242M   0% /dev/shm

/dev/sda1       194M  34M  151M  19% /boot

/dev/sdc         73K  14K   55K  21% /app/log

 

4、修改httpd 的日志路径 

         注意:修改前备份(必须的),以免造成文件损坏

[root@mode-6conf]# cd/etc/httpd/conf

[root@mode-6conf]# ll

total88

-rw-r--r--1 root root 34467 Nov 25 09:34 httpd.conf

-rw-r--r--1 root root 13139 Aug 25 01:53 magic

[root@mode-6conf]# cp  httpd.conf  httpd.conf.ori

[root@mode-6conf]# vimhttpd.conf

         修改前


         修改后


5、重启httpd 服务

[root@mode-6log]# pwd     # 已经在 /app/log 目录

/app/log

[root@mode-6log]# ll      # 日志路径已修改,但服务未重启

total12

drwx------2 root root 12288 Nov 25 09:25 lost+found

[root@mode-6~]# /etc/init.d/httpd restart     # 重启服务

Stoppinghttpd:                                            [  OK  ]

Startinghttpd: httpd: Could not reliably determine the server's fully qualified domainname, using mode-6.5 for ServerName

                                                          [  OK  ]

[root@mode-6log]# ll                      # 重启后查看,存在日志信息

total12

-rw-r--r--1 root root     0 Nov 25 10:23 access_log

drwx------2 root root 12288 Nov 25 09:25 lost+found

6、写满日志信息

         可以通过前台不断的访问,或者使用程序脚本访问

         1、前台访问,后台的日志信息

[oldboy@mode-6log]$ tail -Faccess_log


         2、写脚本自己访问【可以快速占满磁盘空间】

[oldboy@mode-6~]$ for n in`seq 100000`; do curl -s 10.1.38.20 > /dev/null ; done

         3、查看磁盘信息

[root@mode-6log]# df -h

Filesystem      Size Used Avail Use% Mounted on

/dev/sda3       7.2G 2.9G  4.0G  42% /

tmpfs           242M     0 242M   0% /dev/shm

/dev/sda1       194M  34M  151M  19% /boot

/dev/sdc         73K  73K     0 100% /app/log

 

文件删除原理


         上图就是文件删除原理。总的来说需要满足以下条件。

         1、文件硬链接数为0    就是删除文件源文件和硬链接文件

         2、没有进程占用该文件。        引用计数为0

         这样就可说你已经删除了文件,但是可以恢复。如果是彻底删除的话那么要满足:

         3、删除的文件被覆盖或者文件系统回收。   这是就彻底删除了,怎么也找不回来了。

 

 

文件删除1

         第一种文件删除是大家都知道的,就是直接删除。

[root@mode-6log]# ll

total71

-rw-r--r--1 root root 59316 Nov 25 11:09 access_log

drwx------2 root root 12288 Nov 25 09:25 lost+found

[root@mode-6log]# rm -f  access_log

[root@mode-6log]# ll

total12

drwx------2 root root 12288 Nov 25 09:25 lost+found

[root@mode-6log]# df -h

Filesystem      Size Used Avail Use% Mounted on

/dev/sda3       7.2G 2.9G  4.0G  42% /

tmpfs           242M     0 242M   0% /dev/shm

/dev/sda1       194M  34M  151M  19% /boot

/dev/sdc         73K  73K     0 100% /app/log

         很明显,虽然文件删了但是磁盘空间却没有被释放。

         根据上述原因得出:有进程正在读取该文件。

         这时你只需要重启服务即可,如果重启服务还没有释放磁盘空间资源,那么就可能是你有进程正在读取这文件。如使用了如下命令。

[oldboy@mode-6log]$ tail -f  access_log

 

 

文件删除2

         第一种方法虽然简单,但是如果是在生产环境,并且当时还是白天。这时你不可能顺便重启服务,因为后果可能会很严重。

         那么这时我们应该如果清除这些日志信息呢。不停止服务,并且清除这些文件信息,释放磁盘空间资源。操作如下:

 

[root@mode-6log]# ll

total12

-rw-r--r--1 root root 59316 Nov 25 11:19 access_log

drwx------2 root root 12288 Nov 25 09:25 lost+found

[root@mode-6log]# df -h

Filesystem      Size Used Avail Use% Mounted on

/dev/sda3       7.2G 2.9G  4.0G  42% /

tmpfs           242M     0 242M   0% /dev/shm

/dev/sda1       194M  34M  151M  19% /boot

/dev/sdc         73K  73K     0 100% /app/log

         其实也简单,只需要一个命令即可

[root@mode-6log]# > access_log  或者 echo '' >access_log    ★★★★★

[root@mode-6log]# df -h

Filesystem      Size Used Avail Use% Mounted on

/dev/sda3       7.2G 2.9G  4.0G  42% /

tmpfs           242M     0 242M   0% /dev/shm

/dev/sda1       194M  34M  151M  19% /boot

/dev/sdc         73K  15K   54K  22% /app/log

         这样就行了。简单吧!这样也不用重启服务。

 

         所以遇见这种问题,不要先想着直接删除,先看看有没有服务会使用这个文件。

         删除原则,如果文件修改日期是在今天之前的可以直接删除;如果修改日期是今天,那么最好使用  第二种删除方法。防止出现删除后没有释放空间资源,到时候就只有重启服务了。

 

 

         没想到写了用了两个半小时才搞定。超出预计时间啊!

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值