linux命令之 df file fsck fuser
有很多人说,网上很多知识点都有了,为什么你还要在自己的博客中重复这些东西呢?
我想说的是,别人写的东西是别人理解的东西,同时也是别人学习过程的总结,对于自己来说,自己写自己的博客最主要的目的就是为了记录下自己的学习历程,同时对自己学的东西进行下总结,当过了一段时间后可以回头看看,自己曾经经历的,这也是一种学习,也是一种人生态度。
下面言归正传:继续介绍下linux的几个命令
df 磁盘管理命令
功能:检查文件系统的磁盘空间占用情况。获取磁盘空间的剩余空间和已使用空间。
语法:df [选项]
df命令可以显示所有文件系统对i节点和磁盘块的使用情况。
参数:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统
-k 以k字节为单位显示
-i 显示i节点的信息,而不是磁盘块的
-t 显示各指定类型的文件系统的磁盘空间使用情况
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)
-T 显示文件系统类型
$ df Filesystem 1 K-blocks Used Available Use% Mounted on /dev/hda2 1361587 1246406 44823 97% /df命令的输出清单:
Filesystem:代表文件系统对应的设备文件路径(即磁盘分区)
K -blocks:分区包含的数据块(1024字节)的数目
used:已使用数据块
available:未使用数据块
use%:普通用户空间使用百分比
Mounted on :所挂载的目录
说明:第三、四列的块数之和不等于第二列的总块数,这是因为缺省的每个分区都留了少量空间供系统管理员使用,即使普通用户空间已满,管理员仍能登录和留有解决问题所需的工作空间。
eg:列出文件系统i节点的使用情况
$ df -ia Filesystem Inodes IUsed IFree Iused% Mounted on /dev/ hda2 352256 75043 277213 21% / none 0 0 0 0% /proc localhost:(pid221) 0 0 0 0% /net eg:列出文件系统的类型 $ df -T Filesystem Type 1K-blocks Used Available use% Mounted on /dev/hda2 ext2 1361587 1246405 44824 97% /file 命令
功能: 辨识文件类型
语法: file [-beLvz] [-f <文件名称>] [-m <魔法数字文件>...] [文件或目录]
参数:
-b 列出辨识结果时,不显示文件名称
-c 详细显示指令执行过程,便于排错或者分析程序执行的情形
-f <名称文件> 指定名称文件,其内容有一个或多个文件名称,让file依序辨识这些文件,格式为每列一个文件名称
-L 直接显示符号连接所执行的文件的类型
-m <魔法数字文件> 指定魔法数字文件
-v 显示版本信息
-z 尝试去解读压缩文件的内容
fsck命令
功能:被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。
语法:fsck [-aANPrRsTV][-t ][文件系统...]
参数:
-a 自动修复文件系统,不询问任何问题
-A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。
-N 不执行指令,仅列出实际执行会进行的动作。
-P 匹配“-A”参数时使用,会同时检查所有的文件系统。
-r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。
-R 当搭配"-A"参数使用时,会略过/目录的文件系统不予检查
-s 依序执行检查作业,而非同时执行。
-t 指定要检查的文件系统类型
-T 执行fsck指令时,不显示标题信息
-V 显示指令执行过程
eg:检查msdos档案系统的/dev/hda5是否正常,如果有异常便自动修复
fsck -t msdos -a /dev/hda5
运行fsck命令后产生的文件有什么用?
当执行fsck命令时,fsck命令如果发现存在孤立的文件或目录,这些孤立的文件或目录对于系统管理员或用户来说,无法访问到它,因为它与它的上级目录失去了关联,如果用户允许fsck重新把它们找回来的话,fsck命令就会把这些孤立的文件或目录放在文件系统的/lost+found目录下,并用各自的i-node号来命名,以便用户查找自己需要的文件。Lost+found目录通过它的英文含义我们都可以知道,它是一个失物认领处。因此当某个用户发现自己丢失了某个文件,可以在执行fsck之后到/lost+found目录下去查找,这时通过文件名已无法辨认出文件的作用,只能用file之类的命令来确定文件的类型,如果是数据文件,可以用more或vi命令来查看,如果是二进制文件,可以用dbx命令来调试或者试着执行它(注意它可能是一个具有破坏性的程序),知道文件或目录的作用之后,可以对其进行改名。
fuser命令
功能:识别出正在对某个文件或端口访问的进程。同时lsof也能够找出正在对指定文件访问的进程。区别在于fuser可以一次杀死那些正在访问指定文件的进程。
fuser命令列出了本地进程的进程号,哪些本地进程使用了file参数指定的文件或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。
列出的每个进程号后面都跟随一个字母,该字母指示进程如何使用文件
eg:
$ fuser -v -n tcp 80 USER PID ACCESS COMMAND 80/tcp: root 3067 F.... (root)httpd apache 3096 F.... (apache)httpd apache 3097 F.... (apache)httpd
>c 指示进程的工作目录
>e 指示该文件为进程的可执行文件(即进程由该文件拉起)
>f 指示该文件被进程打开,默认情况下f字符不显示
>F 指示该文件被进程打开进行写入,默认情况下F字符不显示
>r 指示该文件为进程的根目录
>m 指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存
语法:fuser[-c|-d|-f][-k][-u][-x][-V]文件
参数:
-l 列出所有已知信号名
-a 显示命令行中指定的所有文件
-k 杀死访问指定文件的所有进程
-i 杀死进程前需要用户进行确认
-m 指定一个被加载的文件系统或一个被加载的块设备
-n 选择不同的名称空间
-u 在每个进程后显示所属的用户名
-V运行时显示详细处理信息
-c 显示包含file的文件系统中关于任何打开的文件
-d 暗示使用了-c和-x标志,显示任何与文件系统(自父目录删除的)无链接的打开的文件,当与-v一起使用时,也会报告被删除文件的节点号和大小。
-x 与-c和-f连用,显示除标准fuser输出以外的可执行的和可载入的对象
-f 仅显示对文件的打开实例
eg:
挂载usb设备并显示所属的用户
$ fuser -m -u /mnt/usb1 /mnt/usb1: 1347c(root) 1348c(guido) 1349c(guido)
列出所有已知信号
$ fuser -l HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED
杀死所有和root目录相关的进程
$ fuser -k /root /root: 4552c 4630c 4661c 4664c 4666c 4669c 4671c 4732c 4733c 4735c 4736c 4740c 4741c 4743c 4744c 4750c 4751c 4767c 11065c 30632c 31755c