磁盘知识
物理组成
磁盘盘(盘片) 存储数据
机械手臂与在机械手臂上的磁盘读取头
主轴马达 转动磁盘盘,让机械手臂的读取头在磁盘盘上写数据
盘片组成
磁头 进行读写操作
磁头开机前停在启停区(盘面最内侧,不含有磁性粒子的区域)
盘面 硬盘的每一个盘片都有两个盘面,从上到下的顺序依次是 0~N
磁道 Track 磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道,编号从外到内顺序依次是0~N
为什么操作系统的启动所需程序,存储在0磁道?
相同转速情况下,越外圈线速度越快,提高开机效率
柱面 Cylinder 所有盘面上的同一磁道构成一个圆柱,通常称做柱面
一个磁道写满数据后,在同一个柱面的下一个盘面去写;一个柱面写满数据后,才移动到下一个柱面写数据
优点:减少寻道的频繁度
扇区 Sector 操作系统以扇区形式将信息存储在硬盘上
1.扇区(sector)是最小的物理存储单位,有512bytes和4K两种格式
2.将扇区组成一个圆是磁柱
3.最小分区单位通常为扇区
4.磁盘分区表主要有两种格式,一种是限制较多的MBR分区,一种是GPT格式
5.MBR分区中,第一个扇区最重要,主要存放开机区的MBR和分区表
6.GPT分区表除了分区数量扩充较多之外,支持的磁盘容量超过2TB
MBR 主引导记录区 位于0盘面的第0个磁道的第一个扇区,共512字节
内容 | 占用空间/字节 |
---|---|
MBR主引导记录 | 446 |
DPT硬盘分区表 | 64 |
分区结束标志“55,AA” | 2 |
硬盘分区表包括4个主分区的分区表:3个主分区+1个扩展(逻辑)分区
簇 文件系统的存储单位
磁盘分类
从工作原理
机械磁盘HDD 驱动马达转动磁盘盘 存在磁盘读取延迟
固态硬盘SSD 通过闪存直接读取 优点:无数据延迟,快速,省电
从磁盘尺寸 3.5
2.5
1.8
从插拔方式 热插拔
非热插拔
从硬盘主要传输接口
SATA 取代IDE
SAS 串行式SCSI 支持热插拔
kernel对不同接口硬盘命名方式
OS | IDE(并口) | SATA(串口) | SCSI |
---|---|---|---|
RHEL5 | /dev/hda | /dev/sda | /dev/sda |
RHEL6 | /dev/sda | /dev/sda | /dev/sda |
RHEL7 | /dev/sda | /dev/sda | /dev/sda |
KVM | /dev/vda(半虚拟化驱动) | /dev/sda(全虚拟化驱动) |
HP服务器硬盘
/dev/cciss/c0d0
/dev/cciss/c0d0p1 //c0第一个控制器, d0第一块磁盘, p1分区1
/dev/cciss/c0d0p2 //c0第一个控制器, d0第一块磁盘, p2分区2
从存储连接方式
本地存储
外部存储 SCSI线
SATA线
SAS线
FC线(光纤)
网络存储 以太网络
FC网络
从分区方式
MBR
<2TB
GPT
>2TB 128个主分区
从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失
硬盘存储原理
存储 用数据的控制电路通过硬盘读写头去改变磁盘表面上极细微的磁性粒子簇的S/N极来加以存储 磁粉的S/N极分别代表二进制中的0和1
删除 删除数据即删除对此数据的索引,不恢复磁粉状态,新数据写入直接覆盖原来的磁粉
磁盘分区核心命令
fdisk 查看系统的分区信息
fdisk [options] <disk> change partition table
fdisk [options] -l <disk> list partition table(s)
fdisk -s <partition> give partition size(s) in blocks
fdisk -l 查看系统的分区详细信息
[root@localhost ~]# fdisk -l /dev/sda
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000253e4
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 21383167 10485760 83 Linux
/dev/sda3 21383168 25577471 2097152 82 Linux swap / Solaris
fdisk -s 给出分区大小(块数)
[root@localhost ~]# fdisk -s /dev/sdb5
102400
fdisk 对磁盘进行分区
[root@zycentos7 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x7e808483.
Command (m for help): m
Command action
a toggle a bootable flag ;设置启动分区
b edit bsd disklabel ;编辑分区标签
c toggle the dos compatibility flag
d delete a partition ;删除一个分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types ;列出分区类型
m print this menu ;输出帮助信息
n add a new partition ;建立一个新的分区
o create a new empty DOS partition table ;创建一个新的空白DOS分区表
p print the partition table ;打印分区表
q quit without saving changes ;退出不保存设置
s create a new empty Sun disklabel
t change a partition's system id ;改变分区的id
u change display/entry units ;改变显示的单位
v verify the partition table ;检查验证分区表
w write table to disk and exit ;保存分区表
x extra functionality (experts only)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free) ;p是主分区
e extended ;e是扩展分区
Select (default p): p
Partition number (1-4, default 1): 1 ;定义分区号
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7e808483
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
主分区最多4个
Command (m for help): n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.
将第4主分区设置为扩展分区
Command (m for help): d
Partition number (1-4, default 4): 4
Partition 4 is deleted
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
Selected partition 4
First sector (6293504-10485759, default 6293504):
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-10485759, default 10485759):
Using default value 10485759
Partition 4 of type Extended and of size 2 GiB is set
保存退出,查看磁盘分区结果
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@zycentos7 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7e808483
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 10485759 2096128 5 Extended
文件系统相关的命令
mkfs 创建ext系列文件系统的工具
mkfs - build a Linux filesystem
[root@zycentos7 ~]# mkfs.ext
mkfs.ext2 mkfs.ext3 mkfs.ext4
mke2fs 管理ext系列文件系统的工具
mke2fs - create an ext2/ext3/ext4 filesystem
mke2fs [OPTIONS] device
选项 | 含义 |
---|---|
-t {ext2/ext3/ext4} | 指明要创建的文件系统类型 |
-b {1024/2048/4096} | 指明文件系统的块大小 |
-L LABEL | 指明卷标 |
-j | 创建有日志功能的文件系统 |
-i | 指明inode与字节的比率(即每多少字节创建一个indode) |
-N # | 直接指明要给此文件系统创建的inode的数量 |
-m # | 指定预留的空间,百分比 |
-O [^]FEATURE | 以指定的特性创建目标文件系统 |
mke2fs -j
= mke2fs -t ext3
= mkfs -t ext3
= mkfs.ext3
[root@zycentos7 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
e2label 卷标的设定与查看
[root@zycentos7 ~]# e2label /dev/sdb1 LINUX ;设定
[root@zycentos7 ~]# e2label /dev/sdb1 ;查看
LINUX
tune2fs 查看或修改ext系列文件系统的某些属性
块大小创建后不可修改
tune2fs [OPTIONS] device
选项 | 含义 |
---|---|
-l | 查看超级块的内容 |
-j | 为“ext2”文件系统添加日志功能,将其转换为“ext3”文件系统 |
-L LABEL | 修改卷标 |
-m # | 调整预留空间百分比 |
-r | 调整系统保留空间(磁盘块个数) |
-O [^]FEATHER | 开启或关闭某种特性 |
-o [^]mount_options | 开启或关闭某种默认挂载选项(acl、^acl) |
练习1 将/dev/sdb5分区的保留比调为1%
[root@localhost ~]# tune2fs -m 1 /dev/sdb5
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 1% (2618 blocks)
练习2 调整/dev/sdb5分区的保留空间为40000个磁盘块
[root@localhost ~]# tune2fs -r 40000 /dev/sdb5
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks count to 40000
dumpe2fs 显示ext系列文件系统的属性信息
dumpe2fs [-h] device
resize2fs 调整ext2\ext3\ext4文件系统的大小
resize2fs [选项] device [size]
选项 | 含义 |
---|---|
-d debug-flags | 打开resize2fs调试特性 |
-f | 强制执行 |
-F | 执行之前刷新文件系统缓冲区 |
-M | 将文件系统缩小到最小值 |
-p | 显示已完成任务的百分比 |
-P | 显示文件系统的最小值 |
用于实现文件系统检测的工具
因进程意外中止或系统崩溃等原因导致定稿操作非正常终止时,可能会造成文件损坏,此时应该离线检测并修复文件系统
e2fsck 磁盘修复,检查时先卸载
e2fsck - check a Linux ext2/ext3/ext4 file system
选项 | 含义 |
---|---|
-a | 检查 partition,如发现问题会自动修复 |
-b | 设定 superblock 位置 |
-B size | 指定 size 作为区块大小 |
-c | 检查 partition 是否有坏轨 |
-d | 输出 e2fsck debug 结果 |
-f | e2fsck 预设只会对错误的文件系统检查,加上 -f 是强制检查 |
-F | 在检查前将硬盘的 buffer cache 清空,避免发生错误 |
-l list | 记录了坏轨区块加入 list 中 |
-n | 以 (read-only) 开启档案系统 |
-p | 关闭互动模式,如有问题自动修复,等同 -a |
-v | 显示详细报告 |
-y | 启用使用者互动模式 |
fsck 检查与修复文件系统,可以同时检查一个或者多个
fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]
选项 | 含义 |
---|---|
filesys | device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr) |
-t | 给定文件系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数 |
-s | 依序一个一个地执行 fsck 的指令来检查 |
-A | 对/etc/fstab 中所有列出来的 partition 做检查 |
-C | 显示完整的检查进度 |
-d | 列印 e2fsck 的 debug 结果 |
-p | 同时有 -A 条件时,同时有多个 fsck 的检查一起执行 |
-R | 同时有 -A 条件时,省略 / 不检查 |
-V | 详细显示模式 |
-a | 如果检查有错则自动修复 |
-r | 如果检查有错则由使用者回答是否修复 |
blkid 获取文件系统TYPE、UUID、LEBEL
blkid 获取文件系统TYPE、UUID、LEBEL
blkid -L LABEL 根据LABEL定位设备
blkid -U UUID 根据UUID定位设备
[root@zycentos7 ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="LINUX" UUID="ec141f3e-ddad-4622-a1b1-e720ec636b0b" TYPE="ext4"
mount 挂载
文件系统的使用,首先要挂载
mount 【参数】 【OPTIONS】 文件系统 挂载点
挂载点mount_point用于作为另一个文件系统的访问入口
挂载点事先存在
应该使用未被或不会被其他进程使用到的目录
挂载点下原有的文件将会被隐藏
挂载时若没有指定挂载选项,则为默认选项
defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime
命令选项
命令选项 | 含义 |
---|---|
-a | 使/etc/fstab文件立即生效 |
-r | readonly,只读挂载 |
-w | read and write, 读写挂载 |
-n | 禁止设备挂载或卸载的操作同步更新至/etc/mtab文件中 |
-t vfstype | 指明要挂载的设备上的文件系统的类型(可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型) |
-L LABEL | 挂载时以卷标的方式指明设备 |
-U UUID | 挂载时以UUID的方式指明设备 |
-o options | 挂载选项 |
sync/async | 同步/异步操作 |
atime/noatime | 文件或目录在被访问时是否更新其访问时间戳 |
diratime/nodiratime | 目录在被访问时是否更新其访问时间戳 |
remount | 重新挂载 |
acl | 支持使用acl功能 |
使用技巧
可以将目录绑定至另一个目录上,作为其临时访问入口
mount --bind 源目录 目标目录
[root@localhost ~]# mount --bind /media /root/mydir
[root@localhost ~]# mount /dev/sr0 /media
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# ls /media
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@localhost ~]# ls /root/mydir
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
常见挂载选项
选项 | 含义 |
---|---|
rw | 读写 |
ro | 只读 |
suid | 支持suid |
dev/nodev | 支持/不支持设备文件 |
exec/noexec | 允许/不允许执行二进制文件 |
auto/noauto | mount -a 开机自动/不自动挂载 |
async/sync | 异步/同步写入 |
usrquota | 支持用户级磁盘配额功能 |
grpquota | 支持组级磁盘配额功能 |
acl | 支持acl功能 |
remount | 在线重新挂载 |
pri | 指定优先级 |
练习1 noexec不允许执行二进制文件
[root@localhost ~]# mount -o noexec /dev/sdb5 /myfile/
[root@localhost ~]# df -h|grep myfile
/dev/sdb5 93M 1.6M 87M 2% /myfile
[root@localhost ~]# cp -rf /bin/date /myfile/
[root@localhost ~]# /myfile/date
-bash: /myfile/date: Permission denied
[root@localhost ~]# mount|grep myfile
/dev/sdb5 on /myfile type ext3 (rw,noexec,relatime,seclabel,data=ordered)
练习2 使用iso挂载
[root@localhost ~]# mount -t iso9660 -o loop /dev/sr0 /media
卸载:umount
umount 挂载点/文件系统
出现无法卸载的问题
[root@zycentos7 ~]# umount /media
umount: /media: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
(1)是不是在挂载点下执行卸载
(2)是不是有进程在占用挂载点及其下的文件
查看被哪个或哪些进程占用 lsof MOUNT_POINT
或 fuser -v MOUNT_POINT
[root@zycentos7 ~]# lsof /media
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 7369 root cwd DIR 11,0 2048 1856 /media
vim 7387 root cwd DIR 11,0 2048 1856 /media
[root@zycentos7 ~]# fuser -v /media
USER PID ACCESS COMMAND
/media: root kernel mount /media
root 7369 ..c.. bash
root 7387 ..c.. vim
如何处理:终止所有正在访问某挂载点的进程 fuser -km MOUNT_POINT
[root@zycentos7 ~]# yum install -y psmisc ;安装fuser
[root@zycentos7 ~]# fuser -km /media
/media: 7369c 7387c
查看当前系统上所有已挂载的设备
df -h
mount
cat /etc/mtab
cat /proc/mounts
挂载的配置文件
[root@zycentos7 ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Sat Sep 7 15:26:22 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=24ca1580-265c-464a-af36-87208001adff / xfs defaults 0 0
UUID=6031ffb6-9740-4b92-8dfc-5f03593140c0 /boot xfs defaults 0 0
UUID=c02a231e-bd7b-4cab-a500-630527702090 swap swap defaults 0 0
配置文件列数 | 说明 |
---|---|
1 | 文件系统:/dev/sdb1,UUID,LABEL |
2 | 挂载点 |
3 | 文件系统类型(iso9660,ext,xfs) |
4 | 文件系统的参数 |
5 | dump备份(0不备份,1每天备份,2不定日期备份) |
6 | fsck检验扇区(0不检验,1最早检验,2一级别检验完成之后进行检验) |
查看UUID和LABEL blkid /dev/sdb5
或 dumpe2fs -h /dev/sdb5
对比分区名,LABEL,UUID
使用设备名称 /dev/sda
来挂载分区时是固定的,若磁盘的插槽顺序发生变化,会出现名称与设备不对应的问题
使用label挂载要随时注意LABEL NAME
使用UUID,每个分区被格式化以后都会有一个UUID
作为唯一的标识号,不会发生错乱
dd 转换和复制文件
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
项目 | Value |
---|---|
if=filename | 输入文件名,缺省为标准输入,即指定源文件 |
of=filename | 输出文件名,缺省为标准输出,即指定目的文件 |
bs=bytes | 同时设置读入/输出的块大小为bytes个字节 |
count=blocks | 仅拷贝blocks个块,块大小等于ibs指定的字节数 |
conv=lcase | 把大写字符转换为小写字符 |
conv=ucase | 把小写字符转换为大写字符 |
练习1 复制/dev/sda1数据到指定文件中
[root@zycentos7 ~]# dd if=/dev/sda1 of=dev_sda1.bak
练习2 删除/dev/sda1分区的数据
[root@zycentos7 ~]# dd if=/dev/zero of=/dev/sba1
/dev/zero是0字符设备,可以连续不断的产生特殊数据流
练习3 生成任意大小的文件
[root@zycentos7 ~]# dd if=/dev/zero of=test.data bs=1M count=2
2+0 records in
2+0 records out
2097152 bytes (2.1 MB) copied, 0.00206577 s, 1.0 GB/s
[root@zycentos7 ~]# ls -alh test.data
-rw-r--r--. 1 root root 2.0M Nov 4 20:44 test.data
练习4 备份与恢复MBR
备份MBR
[root@localhost ~]# dd if=/dev/sda of=/root/image count=1 bs=512
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000573952 s, 892 kB/s
[root@localhost ~]# du -h image
4.0K image
恢复MBR
[root@localhost ~]# dd if=/root/image of=/dev/sda
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000218222 s, 2.3 MB/s
备份光驱
[root@localhost ~]# dd if=/dev/cdrom of=disk.img
dd if=/dev/sr0 of=disk.img
备份镜像
[root@localhost ~]# dd if=/dev/sr0 of=disk.img
练习5 拷贝内容到磁盘
[root@localhost ~]# dd if=/dev/mem of=mem.bin
dd: error reading ‘/dev/mem’: Operation not permitted
2048+0 records in
2048+0 records out
1048576 bytes (1.0 MB) copied, 0.0585989 s, 17.9 MB/s
[root@localhost ~]# du -h mem.bin
1.0M mem.bin
练习6 确定系统最佳的块大小
[root@localhost ~]# dd if=/dev/zero bs=1024 count=1000000 of=1Gb.file
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB) copied, 24.9583 s, 41.0 MB/s
[root@localhost ~]# dd if=/dev/zero bs=2048 count=500000 of=1Gb.file
500000+0 records in
500000+0 records out
1024000000 bytes (1.0 GB) copied, 3.95915 s, 259 MB/s
[root@localhost ~]# dd if=/dev/zero bs=4096 count=250000 of=1Gb.file
250000+0 records in
250000+0 records out
1024000000 bytes (1.0 GB) copied, 17.7855 s, 57.6 MB/s
[root@localhost ~]# dd if=/dev/zero bs=8092 count=125000 of=1Gb.file
125000+0 records in
125000+0 records out
1011500000 bytes (1.0 GB) copied, 2.16878 s, 466 MB/s
练习7 测试硬盘的读写速度
[root@zycentos7 ~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB) copied, 15.7944 s, 64.8 MB/s
[root@zycentos7 ~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null
15625+0 records in
15625+0 records out
1024000000 bytes (1.0 GB) copied, 6.03152 s, 170 MB/s
2000000+0 records in
2000000+0 records out
1024000000 bytes (1.0 GB) copied, 6.04139 s, 169 MB/s
练习8 修复硬盘
[root@zycentos7 ~]# dd if=/dev/sda of=/dev/sda
[root@zycentos7 ~]# dd if=/dev/hda of=/dev/hda
练习9 将一个大视频的第i个字节的值改成0x41(大小字母A的ASCLL值)
[root@zycentos7 ~]# echo A |dd of=bigfile seek=$i bs=1 count=1 conv=nortunc
df 显示磁盘分区上可以使用的磁盘空间
-a 查看全部文件系统,单位默认KB
-h 以KB、MB、GB的单位来显示
[root@localhost ~]# df -h /dev/sdb5
Filesystem Size Used Avail Use% Mounted on
devtmpfs 476M 0 476M 0% /dev
du 显示目录中文件的大小
-h 以K、M、G为单位显示,提高可读性
-a 包括显示隐藏文件,单位 KB
-b 单位字节byte
-c 同时显示总和,单位KB
-m 单位MB
-s 仅显示目录的总值,单位KB
lsof 列出当前系统打开的文件
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
[root@localhost ~]# lsof|head -5
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 8,2 262 64 /
systemd 1 root rtd DIR 8,2 262 64 /
systemd 1 root txt REG 8,2 1616360 169687 12 /usr/lib/systemd/systemd
systemd 1 root mem REG 8,2 20112 500 74 /usr/lib64/libuuid.so.1.3.0
列信息 | 意义 |
---|---|
COMMAND | 进程的名称 |
PID | 进程标识符 |
PPID | 父进程标识符(需要指定-R参数) |
USER | 进程所有者 |
FD | 文件描述符(如cwd,txt) |
TYPE | 文件类型(如DIR,REG) |
DEVICE | 指定磁盘的名称 |
SIZE/OFF | 文件的大小 |
NODE | 索引节点(文件在磁盘上的标识) |
NAME | 打开文件的确切名称 |
- 列出所有打开的文件
lsof
如果不加任何参数,就会打开所有被打开的文件 - 列出某个用户打开的文件信息
lsof -u username
[root@localhost ~]# lsof -u root|head -2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 8,2 262 64 /
-
列出除了某个用户外的被打开的文件信息
lsof -u ^root
-
显示commond进程现在打开的文件
lsof -c command [-c command1]
[root@localhost ~]# lsof -c httpd|head -2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 10023 root cwd DIR 8,2 277 64 /
- 列出进程号为pid的进程所打开的文件
lsof -p pid [,pid1,pid2]
[root@localhost ~]# service httpd start
[root@localhost ~]# ps -ef|grep httpd|head -1
root 10023 1 0 11:03 ? 00:00:00 /usr/sbin/httpd -DFOREGRO
[root@localhost ~]# lsof -p 10023|head -2
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 10023 root cwd DIR 8,2 277 64 /
- 显示目录下被开启的文件
lsof +d 目录
- 显示目录下被开启的文件(递归)
lsof +D 目录
- 显示指定文件描述符的进程
lsof -d FD
使用fd为4的进程lsof -d 4
FD类型为txt的进程lsof -d txt
- 显示符合条件的进程情况
lsof -i
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
列表项 | 含义 |
---|---|
46 | IPv4 or IPv6 |
protocol | TCP or UDP |
hostname | Internet host name |
hostaddr | IPv4地址 |
service | etc/service中的 service name (可以不只一个) |
port | 端口号 (可以不只一个) |
查看22端口连接情况,默认为sshd端口
[root@zycentos7 ~]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 6807 root 3u IPv4 37710 0t0 TCP *:ssh (LISTEN)
sshd 6807 root 4u IPv6 37716 0t0 TCP *:ssh (LISTEN)
sshd 7149 root 3u IPv4 39988 0t0 TCP bogon:ssh->bogon:21302 (ESTABLISHED)
sshd 7153 root 3u IPv4 40090 0t0 TCP bogon:ssh->bogon:21316 (ESTABLISHED)
- 查找已删除但未关闭文件
lsof | grep delete