社区编辑申请
注册/登录
分析Unix文件系统的实用命令 译文
系统 其他OS 系统运维
本文介绍了查找Unix系统上数据的若干最佳工具和方法。

似乎困扰几乎所有文件系统(Unix及其他文件系统)的问题之一就是文件不断日积月累。几乎没有人抽出时间来清理不再使用的文件,结果文件系统变得凌乱不堪,到处是价值不大或值得怀疑的文件,以至于确保文件顺畅运行、得到合理备份以及易于管理就成了一个永恒的挑战。

我见过有助于鼓励所有那些残留数据的用户应对这个问题的一种方法就是,对文件集合创建一份摘要报告或“概况”(profile),报告诸多信息,比如文件数量,那些文件中最旧、***、***的文件;以及统计谁拥有那些文件。要是有人认识到50个万文件组成的集合含有的文件其年限没一个在五年以下,他们很可能放手大胆地删除这些文件,或者至少将它们加以归档和压缩。基本问题是,庞大的文件集合让人不知所措,大多数人害怕可能不小心删除了重要的文件。要是有办法描述文件集合的特点,就有助于表明内容的性质,并且鼓励那些爱好收集文件的人清理一下。

当我在Unix上准备制作一份文件系统摘要报告时,几个Unix命令轻松提供了一些非常有用的统计数字。想统计目录中的文件数量,你可以使用查找命令,就像这样。

  1. $ find . -type f | wc -l  
  2. 187534 

找到最旧文件和***文件要复杂一点,不过仍相当容易。在下列命令中,我们再次使用查找命令来查找文件,显示了采用年-月-日格式的数据,这种格式可以按文件年限来进行排序,然后显示该列表中最靠前、因而最旧的文件。

在第二个命令中,我们如出一辙,不过输出***一行、因而是***的文件。

 

  1. $ find -type f -printf '%T+ %p\n' | sort | head -n 1 
  2. 2006-02-03+02:40:33 ./skel/.xemacs/init.el 
  3. $ find -type f -printf '%T+ %p\n' | sort | tail -n 1 
  4. 2015-07-19+14:20:16 ./.bash_history 

%T(文件日期和时间)和%p(文件名称和路径)参数以及printf命令让这项操作得以顺利执行。

如果我们看一下主目录,无疑会发现历史文件是***文件,那不可能是非常值得关注的信息片段。你可以忽略那些文件,只要对它们进行“un-grepping”操作,你也可以忽略以点开始的所有文件,如下所示。

 

  1. $ find -type f -printf '%T+ %p\n' | grep -v "\./\." | sort | tail -n 1 
  2. 2015-07-19+13:02:12 ./isPrime 

找到***的文件需要使用%s(大小)参数,我们加入了文件名称(%f),因为那是我们希望报告显示的内容。

 

  1. $ find -type f -printf '%s %f \n' | sort -n | uniq | tail -1 
  2. 20183040 project.org.tar 

想总结文件所有权,就使用%u(用户)

 

  1. $ find -type f -printf '%u \n' | grep -v "\./\." | sort | uniq -c 
  2.    180034 shs 
  3.      7500 jdoe 

如果你的文件系统还记录上一次访问日期,那么显示文件在一段时期(比如说两年多)内没有访问可能非常有用。这让你的检查人员可以深入了解那些文件的价值,这点很重要。上一次访问参数(%a)可以这样使用:

 

  1. $ find -type f -printf '%a+ %p\n' | sort | head -n 1 
  2. Fri Dec 15 03:00:30 2006+ ./statreport 

当然了,如果最近访问的那个文件又是很久以前的文件,这可能会引起还要大的反应。

 

  1. $ find -type f -printf '%a+ %p\n' | sort | tail -n 1 
  2. Wed Nov 26 03:00:27 2007+ ./my-notes 

通过创建一个摘要报告,显示文件日期范围、***文件、文件用户以及最早和***访问时间,从而大致了解文件系统或庞大目录里面的内容,这有助于表明文件集合有多新、多重要,还能帮助文件用户确定是不是该清理一下了。

原文标题:Handy commands for profiling your Unix file systems

责任编辑:火凤凰 来源: 51CTO
相关推荐

2022-06-12 06:48:34

2022-06-20 22:37:25

Linux操作系统命令

2022-06-15 08:25:07

Python天气数据可视化分析

2022-06-22 09:19:55

HDC鸿蒙ADB命令

2022-06-15 08:21:49

Linux运维工程师

2022-06-17 09:47:04

Linux命令

2022-06-28 12:35:21

DockerPython

2022-06-28 09:26:25

Python配置文件

2022-06-16 07:32:38

VSCodePython插件

2022-06-27 23:44:37

云原生云存储云计算

2022-06-21 09:26:21

Shell脚本JavaScript

2022-06-06 10:20:59

CPUCPU 使用率CPU 负载

2022-06-07 17:08:51

WizTreewindows工具

2022-06-13 12:43:13

Java模块

2022-06-16 10:14:51

LinuxEmacs编辑器

2022-06-10 09:00:53

前端项目个JSON

2022-05-09 08:55:58

Linuxdiff命令

2022-06-04 14:43:31

Windows 10出厂设置重装

2022-06-20 08:58:25

Obsidian笔记工具

2022-06-17 09:08:27

代码Python内置库

同话题下的热门内容

为什么用C语言编写操作系统?导致系统性能失败的十个原因

编辑推荐

软件卸载不干净怎么办?智能卸载轻松搞定!苹果凌晨1点最新推送iOS 11正式版 如何使用 printf 来格式化输出CentOS Linux 已死—Red Hat 称 Stream 不是替代品BIO、NIO 到多路复用的演进路径,你明白了吗?
我收藏的内容
点赞
收藏

51CTO技术栈公众号