每日一个linux命令 df

每日一个linux命令:df

linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

1.命令格式:

df [选项] [文件]

2.命令功能:

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示

3.命令参数:

必要参数:

-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型

选择参数:

-t<文件系统类型> 只显示选定文件系统的磁盘信息
-x<文件系统类型> 不显示选定文件系统的磁盘信息
--help 显示帮助信息
--version 显示版本信息

4.使用实例:

实例1:显示磁盘使用情况

命令:
df
输出:

文件系统               1K-块        已用     可用 已用% 挂载点
/dev/sda7             19840892    890896  17925856   5% /
/dev/sda9            203727156 112797500  80413912  59% /opt
/dev/sda8              4956284    570080   4130372  13% /var
/dev/sda6             19840892   1977568  16839184  11% /usr
/dev/sda3               988116     23880    913232   3% /boot
tmpfs                 16473212         0  16473212   0% /dev/shm

说明:

linux中df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3,4列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的挂载点。

实例2:以inode模式来显示磁盘使用情况

命令:
df -i
输出:

文件系统               Inode (I)已用 (I)可用 (I)已用% 挂载点
/dev/sda7            5124480    5560 5118920    1% /
/dev/sda9            52592640   50519 52542121    1% /opt
/dev/sda8            1280000    8799 1271201    1% /var
/dev/sda6            5124480   80163 5044317    2% /usr
/dev/sda3             255232      34  255198    1% /boot
tmpfs                4118303       1 4118302    1% /dev/shm

说明:

实例3:显示指定类型磁盘

命令:
df -t ext3
输出:

文件系统               1K-块        已用     可用 已用% 挂载点
/dev/sda7             19840892    890896  17925856   5% /
/dev/sda9            203727156  93089700 100121712  49% /opt
/dev/sda8              4956284    570104   4130348  13% /var
/dev/sda6             19840892   1977568  16839184  11% /usr
/dev/sda3               988116     23880    913232   3% /boot

说明:

实例4:列出各文件系统的i节点使用情况

命令:
df -ia
输出:

文件系统               Inode (I)已用 (I)可用 (I)已用% 挂载点
/dev/sda7            5124480    5560 5118920    1%
/proc                       0       0       0    -  /proc
sysfs                      0       0       0    -  /sys
devpts                     0       0       0    -  /dev/pts
/dev/sda9            52592640   50519 52542121    1% /opt
/dev/sda8            1280000    8799 1271201    1% /var
/dev/sda6            5124480   80163 5044317    2% /usr
/dev/sda3             255232      34  255198    1% /boot
tmpfs                4118303       1 4118302    1% /dev/shm
none                       0       0       0    -  /proc/sys/fs/binfmt_misc

说明:

实例5:列出文件系统的类型

命令:
df -T
输出:

文件系统      类型     1K-块        已用     可用 已用% 挂载点
/dev/sda7     ext3    19840892    890896  17925856   5% /
/dev/sda9     ext3   203727156  93175692 100035720  49% /opt
/dev/sda8     ext3     4956284    570104   4130348  13% /var
/dev/sda6     ext3    19840892   1977568  16839184  11% /usr
/dev/sda3     ext3      988116     23880    913232   3% /boot
tmpfs        tmpfs    16473212         0  16473212   0% /dev/shm

说明:

实例6:以更易读的方式显示目前磁盘空间和使用情况

命令:

输出:

 
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda7              19G  871M   18G   5% /
/dev/sda9             195G   89G   96G  49% /opt
/dev/sda8             4.8G  557M  4.0G  13% /var
/dev/sda6              19G  1.9G   17G  11% /usr
/dev/sda3             965M   24M  892M   3% /boot
tmpfs                  16G     0   16G   0% /dev/shm

[[email protected] log]# df -H
文件系统               容量   已用  可用 已用% 挂载点
/dev/sda7               21G   913M    19G   5% /
/dev/sda9              209G    96G   103G  49% /opt
/dev/sda8              5.1G   584M   4.3G  13% /var
/dev/sda6               21G   2.1G    18G  11% /usr
/dev/sda3              1.1G    25M   936M   3% /boot
tmpfs                   17G      0    17G   0% /dev/shm
 
[[email protected] log]# df -lh
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda7              19G  871M   18G   5% /
/dev/sda9             195G   89G   96G  49% /opt
/dev/sda8             4.8G  557M  4.0G  13% /var
/dev/sda6              19G  1.9G   17G  11% /usr
/dev/sda3             965M   24M  892M   3% /boot
tmpfs                  16G     0   16G   0% /dev/shm
 
[[email protected] log]# df -k
文件系统               1K-块        已用     可用 已用% 挂载点
/dev/sda7             19840892    890896  17925856   5% /
/dev/sda9            203727156  93292572  99918840  49% /opt
/dev/sda8              4956284    570188   4130264  13% /var
/dev/sda6             19840892   1977568  16839184  11% /usr
/dev/sda3               988116     23880    913232   3% /boot
tmpfs                 16473212         0  16473212   0% /dev/shm

说明:

-h更具目前磁盘空间和使用情况 以更易读的方式显示
-H根上面的-h参数相同,不过在根式化的时候,采用1000而不是1024进行容量转换
-k以单位显示磁盘的使用情况
-l显示本地的分区的磁盘空间使用率,如果服务器nfs了远程服务器的磁盘,那么在df上加上-l后系统显示的是过滤nsf驱动器后的结果
-i显示inode的使用情况。linux采用了类似指针的方式管理磁盘空间影射.这也是一个比较关键应用

linux下查看文件详细信息命令stat

有时候想要查看linux 文件的详细的一些时间 ls -l 出来的结果可能不是你想要的了

stat 出来的结果可能才是你想要的

[[email protected] ~]# stat hosts
  File: "hosts"
  Size: 1204        Blocks: 8          IO Block: 4096   普通文件
Device: fd00h/64768d    Inode: 1569988     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-10-25 12:07:04.174510054 +0800
Modify: 2013-05-22 18:27:06.100797625 +0800
Change: 2013-05-22 18:27:06.100797625 +0800

说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态
与文件相关的3个时间:

  1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

  2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

  3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令文件名。

下面是 man stat 的详细信息解释

用法:stat [选项]… 文件…
Display file or file system status.

 -L, --dereference     follow links
  -Z, --context         print the SELinux security context
  -f, --file-system     display file system status instead of file status
  -c --format=格式    使用指定输出格式代替默认值,每用一次指定格式换一新行
      --printf=格式   类似 --format,但是会解释反斜杠转义符,不使用换行作
                输出结尾。如果您仍希望使用换行,可以在格式中
                加入"\n"
  -t, --terse       使用简洁格式输出
      --help        显示此帮助信息并退出
      --version     显示版本信息并退出

有效的文件格式序列(不使用 –file-system):

%a 八进制权限
  %A   用可读性较好的方式输出权限
  %b   计算已分配块数(参见%B)
  %B   以字节为单位输出%b 所报告的每个块的大小
  %C   SELinux 安全环境字符串
  %d    十进制设备编号
  %D    十六进制设备编号
  %f    十六进制原始模式
  %F    文件类型
  %g    文件的属组ID
  %G    文件的属组组名
  %h    硬链接数量
  %i    Inode 编号
  %n    文件名
  %N    如果对象是一个符号链接,显示引用到的其它文件名
  %o    I/O 块大小
  %s    总计大小,以字节为单位
  %t    十六进制主设备类型
  %T    十六进制子设备类型
  %u    文件的属主ID
  %U    文件的属主用户名
  %x    上次访问时间
  %X    从UNIX 元年起计的上次访问时间
  %y    上次修改时间
  %Y    从UNIX 元年起计的上次修改时间
  %z    上次更改时间
  %Z    从UNIX 元年起计的上次更改时间

有效的文件系统格式序列:

%a 非超级用户可用的剩余块数
  %b    文件系统的总数据块数
  %c    文件系统中文件节点总数
  %d    文件系统中空闲文件节点数
  %f    文件系统中空闲块数
  %C    SELinux 安全环境字符串
  %i    十六进制文件系统ID
  %I    允许的文件名最大长度
  %n    文件名
  %s    块大小(用于快速传输)
  %S    基本块大小(用于块计数)
  %t    十六进制类型描述
  %T    可读性较好的类型描述

linux LVM分区查看dm设备

在linux中iostat -d查看磁盘状态时,有的会有如下dm-0,dm-1的条目.

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn 
sda               0.19         0.57         2.92     341228    1753052 
dm-0              0.27         0.56         2.88     334673    1729848 
dm-1              0.00         0.00         0.00        876          0 

如果在分区时利用了LVM,则一般会生成dm-N 逻辑卷(LogicVolume).它类似于普通分区时的一个分区如sda0之类的.只不过它利用了Mapper Device机制,在PysicalVolume上虚拟出来的分区信息.

查找dm-N对应的挂载点

#sar -d 1 
02:53:06 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util 
02:53:07 PM    dev8-0      8.00      0.00     72.00      9.00      0.06      7.00      7.00      5.60 
02:53:07 PM  dev252-0      9.00      0.00     72.00      8.00      0.06      6.22      6.22      5.60 
02:53:07 PM  dev252-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

显示dev252-0,dev252-1,即主设备号为dev252(sda设备号为dev8,这是linux为设备生成的内部设备号),次设备号为0,1

#cd /dev/mapper; ll 
lrwxrwxrwx  1 root root       7 Apr  3 16:12 yinbeiweb1-root -> ../dm-0 
lrwxrwxrwx  1 root root       7 Apr  3 16:12 yinbeiweb1-swap_1 -> ../dm-1 

 
可看到软链到 /dev/dm-N上.

#ll /dev/dm-* 
  brw-rw---- 1 root disk 252, 0 Apr  3 16:12 ../dm-0 
  brw-rw---- 1 root disk 252, 1 Apr  3 16:12 ../dm-1 

可看到两者的主设备号都是252

linux命令之find

linux命令之find

find是linux下很强大的搜索工具,但速度慢且很费硬盘。但不管怎么说,此命令的使用频率依然很高。

使用选项:
find [路径] <表达式> [操作]

1、name选项,按名称查找

查找当前目录下的manage.py 文件:find . -name ‘manage.py’

2、atime/ctime/mtime选项,根据时间(24小时为单位)查找

注:a表示access,c表示create,m表示modify
查找24小时之内创建的文件: find . -ctime -1
查找24小时之前创建的文件: find . -ctime 1
注:atime和mtime用法一致

3、amin/cmin/mmin选项,根据时间查找

查找10分钟之内创建的文件: find . -cmin -10
查找10分钟之前创建的文件: find . -cmin 10
注:amin和mmin用法一致

4、anewer/cnewer/mnewer,查找比某一文件新的文件

查找在hello.py之后访问过的文件:find . -anewer hello.py

5、user

查找属于某一用户的文件:find . -user the5fire

6、type

查找所有文件:find . -type f
查找所有目录包含demo的目录:find . -type d -name ‘demo

7、exec,据说是很强大的参数

查找’setup.py’文件,然后打开: find . -name ‘setup.py’ -exec vim {} \;
另外一个最常用的,强制删除项目下面的所有.svn文件目录,find . -name ‘.svn’ -exec rm -rf {} \;

8、empty

显示所有的空白文件,并显示详细:find . -empty -ls #加ls完全画蛇添足,只是为了说明这个参数。

9、size

显示大小为10k的文件:find . -size 10k
显示所有大于10k的文件:find . -size +10k
显示所有小于10k的文件:find .-size -10k

10、or、and、not, 或、与、非查询

查找大于10k或者名称含有demo的文件:find . -size +10k -o -name ‘demo
查找大于10k且小于100k的文件:find . -size +10k -a -size -100k
查找大于10k并且名称不含有demo的文件:find . -size +10k ! -name ‘demo

11、perm,根据文件权限查找

注:如查找权限为600的文件:find . -perm 600,如果权限前面加“-”号,表示满足一位匹配即可,
如:find . -perm 007会匹配权限为007、077、777的文件

12、regex,用正则表达式查找

如: find . -regex ‘./[0-9]\w.’(匹配以数字开头的文件)

13、-maxdepth,限制目录深度查找

查找一级目录下的所有py文件:find . -name ‘*.py’ -maxdepth 1

输入find -help之后还有很多,就不一一列了,这些应该能满足日常需求了。欢迎补充^_^

linux命令之chattr

   一般Linux的文件系统都是ext2/ext3。ext文件系统的文件,目录会有一些文件系统所特有的属性。我们之前所熟知的rwx等属性是linux操作系统赋予文件的属性,和登录用户相关。而本文所说的这个特性是文件系统相关的,它不受登录用户的限制。

   ext3所包括的文件属性很多,主要涉及到文件在文件系统上的存储、是否启用日志、是否更新atime、是否采用压缩等多种高级特性,其中我们常见的一种属性就是防删除。

   使用lsattr命令可以查看文件的文件系统属性,

   lsattr

   横杠-表示未设置属性,默认情况下新建的文件是没有任何属性的,可以用chattr命令来进行修改。

   每种属性有一个代号,详细的代号及其解释可以使用man chattr查看。我们说的防删除属性代号为i。chattr  +用来增加属性,chattr  -用来去除属性。需要注意的时,执行chattr需要root权限,否则会修改失败。我们为linux这个文件增加i属性,如下:

   chattr

   此时文件linux已经被赋予了i属性,尝试删除就会错误。

   rm

   同时,此文件也不能被修改,重命名以及做硬链接。

   利用这个特性就可以实现保护系统文件的目的,防止由于误操作导致文件丢失。