linux文件系统基本管理
文章目录
- linux文件系统基本管理
- 识别文件系统和设备
- Linux 中设备
- Linux 文件系统
- 查看设备和文件系统
- lsblk 命令
- df 命令
- du命令
- 挂载和卸载文件系统
- 环境准备
- 挂载文件系统
- 卸载文件系统
- 卸载失败
- lsof 命令
- 查找系统中文件
- locate
- find
- 根据文件 name 查找
- 根据文件 type 查找
- 根据文件 owner 查找
- 根据文件 perm 查找
- 根据文件 size 查找
- 根据文件 time 查找
- 根据文件硬链接数和 inum 查找
- 多条件表达式
- action
linux文件系统基本管理
识别文件系统和设备
Linux 中设备
在Linux中,对存储设备的访问由特殊类型文件-块设备(block)提供。挂载块设备前,必须先使用文件系统对其进行格式化。
块设备文件与其他的设备文件一起存储在/dev目录中。设备文件是由操作系统自动创建的。
常见的不同类型接口块设备:
- 接口:SATA/SAS/USB/SCSI,名称:/dev/sda、/dev/sdb …
- 接口:virtio-blk,虚拟机磁盘,名称:/dev/vda、/dev/vdb …
- 接口:NVMe SSD,名称:/dev/nvme0n1、/dev/nvme1n1…
- 接口:SD/MMC/eMMC,名称:/dev/mmcblk0,/dev/mmcblk1 …
通常,不会将整个存储设备格式化为一个文件系统中,而是将硬盘驱动器划分为多个逻辑存储单元, 这些单元称为分区。各种分区使用不同的文件系统进行格式化或用于不同的用途。 例如,一个分区可以包含用户目录,而另一个分区可以包含系统数据和日志。 如果用户用数据填充主目录分区,则系统分区可能仍然有可用空间。
- /dev/sda第一个分区为/dev/sda1,第二个分区为/dev/sda2,以此类推。
- /dev/nvme0n1p1,/dev/nvme0n1p2
- /dev/vda1,/dev/vda2
- /dev/xvda1,/dev/xvda2
Linux 文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。
Linux服务器上的文件是按文件系统层次结构访问的。
管理文件系统需要:
- 确定存储设备的空间使用情况以及文件系统层次结构中受影响的目录。
- 存储设备发生故障,而您需要知道哪些文件系统存在风险。
要让文件系统的内容在文件系统层次结构中可用,必须将它挂载到一个空目录上,该目录被称为挂载点。
参考学习:这里
查看设备和文件系统
lsblk 命令
list block查看块设备使用情况。
[root@webapp ~ 10:26:25]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm /├─centos-swap 253:1 0 2G 0 lvm [SWAP]└─centos-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
结果说明:
- NAME :块设备名。
- MAJ:MIN :主要(MAJ)和次要(MIN)设备号。
- RM :指明设备是否是可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
- SIZE :本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
- RO :该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
- TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
- MOUNTPOINT :本栏指出设备挂载的挂载点。
df 命令
查看文件系统使用情况。
[root@webapp ~ 10:47:25]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 485744 0 485744 0% /dev
tmpfs 497832 0 497832 0% /dev/shm
tmpfs 497832 7872 489960 2% /run
tmpfs 497832 0 497832 0% /sys/fs/cgroup
/dev/mapper/centos-root 52403200 2913220 49489980 6% /
/dev/mapper/centos-home 49250820 33068 49217752 1% /home
/dev/sda1 1038336 142304 896032 14% /boot
tmpfs 99568 0 99568 0% /run/user/0
[root@webapp ~ 10:47:43]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 2.8G 48G 6% /
/dev/mapper/centos-home xfs 47G 33M 47G 1% /home
/dev/sda1 xfs 1014M 139M 876M 14% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
[root@webapp ~ 10:47:59]# df -H
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 498M 0 498M 0% /dev
tmpfs 510M 0 510M 0% /dev/shm
tmpfs 510M 8.1M 502M 2% /run
tmpfs 510M 0 510M 0% /sys/fs/cgroup
/dev/mapper/centos-root 54G 3.0G 51G 6% /
/dev/mapper/centos-home 51G 34M 51G 1% /home
/dev/sda1 1.1G 146M 918M 14% /boot
tmpfs 102M 0 102M 0% /run/user/0
[root@webapp ~ 10:48:10]# df -hT /boot
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda1 xfs 1014M 139M 876M 14% /boot
[root@webapp ~ 10:48:23]# df /tmp
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 52403200 2913220 49489980 6% /
du命令
[root@webapp ~ 11:22:04]# du /root |sort -n
0 /root/httpd-2.4.60/changes-entries
0 /root/httpd-2.4.60/docs/manual/style/lang
... ...19452 /root/selinux
25260 /root/httpd-2.4.60/docs/manual
27420 /root/httpd-2.4.60/docs
30536 /root/httpd-2.4.60/modules
70916 /root/httpd-2.4.60
177152 /root
[root@webapp ~ 11:22:13]# du -s /root |sort -n
177152 /root
[root@webapp ~ 11:22:26]# du-sh /boot
-bash: du-sh: 未找到命令
[root@webapp ~ 11:22:38]# du -sh /boot
107M /boot
[root@webapp ~ 11:25:20]# dd if=/dev/zero of=/usr/share/doc/dhclient-4.2.5/bigfile-4G bs=1M count=4096
记录了4096+0 的读入
记录了4096+0 的写出
4294967296字节(4.3 GB)已复制,6.6131 秒,649 MB/秒
[root@webapp ~ 11:25:33]# du -sk /* |sort -n
du: 无法访问"/proc/17287/task/17287/fd/4": 没有那个文件或目录
du: 无法访问"/proc/17287/task/17287/fdinfo/4": 没有那个文件或目录
du: 无法访问"/proc/17287/fd/4": 没有那个文件或目录
du: 无法访问"/proc/17287/fdinfo/4": 没有那个文件或目录
0 /bin
0 /dev
0 /lib
0 /lib64
0 /media
0 /mnt
0 /opt
0 /proc
0 /sbin
0 /srv
0 /sys
4 /app_data
44 /home
676 /tmp
7872 /run
37296 /etc
109088 /boot
177152 /root
816348 /var
6013972 /usr
[root@webapp ~ 11:25:52]# du -sk /usr |sort -n
6013972 /usr
[root@webapp ~ 11:26:02]# du -sk /usr/* |sort -n
0 /usr/etc
0 /usr/games
0 /usr/src
0 /usr/tmp
14784 /usr/include
50240 /usr/sbin
66712 /usr/local
67788 /usr/libexec
202324 /usr/lib64
224424 /usr/bin
749492 /usr/lib
4638208 /usr/share[root@webapp ~ 11:26:09]# du -sk /usr/share/* |sort -n
0 /usr/share/desktop-directories
... ...
19816 /usr/share/perl5
22516 /usr/share/man
25216 /usr/share/vim
56940 /usr/share/nginx
127644 /usr/share/locale
4265260 /usr/share/doc[root@webapp ~ 11:26:19]# du -sk /usr/share/doc/* |sort -n
0 /usr/share/doc/policycoreutils
0 /usr/share/doc/redhat-release
4 /usr/share/doc/alsa-lib
4 /usr/share/doc/atomic-registries-1.22.1
4 /usr/share/doc/binutils-2.27
4 /usr/share/doc/boost-iostreams-1.53.0
... ...
3648 /usr/share/doc/lorax-19.7.28
4376 /usr/share/doc/gcc-4.8.5
4768 /usr/share/doc/lorax-composer-19.7.43
4194316 /usr/share/doc/dhclient-4.2.5[root@webapp ~ 11:26:25]# du -sk /usr/share/doc/dhclient-4.2.5/* |sort -n
4 /usr/share/doc/dhclient-4.2.5/dhclient6.conf.example
4 /usr/share/doc/dhclient-4.2.5/dhclient.conf.example
4 /usr/share/doc/dhclient-4.2.5/README.dhclient.d
4194304 /usr/share/doc/dhclient-4.2.5/bigfile-4G
[root@webapp ~ 11:26:40]# du -sk /usr/share/doc/dhclient-4.2.5/bigfile-4G/* |sort -n
du: 无法访问"/usr/share/doc/dhclient-4.2.5/bigfile-4G/*": 不是目录
文件系统写入数据,以block为单位
挂载和卸载文件系统
环境准备
[root@webapp ~ 11:43:59]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm /├─centos-swap 253:1 0 2G 0 lvm [SWAP]└─centos-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@webapp ~ 11:44:03]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
[root@webapp ~ 11:44:09]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=1310720 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载文件系统
当需要适用文件系统的时候,通过mount命令挂载。
mount 命令语法:
[root@webapp ~ 11:49:21]# man mount
mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项说明:
- -t vfstype,指明文件系统类型。
- -o options,指明挂载选项。
- device,指明要挂载的具有文件系统的设备,可以通过UUID=<uuid>、<device>、LABEL=<label>、PARTLABEL=<label>、PARTUUID=<uuid>等方式指明。例如,/dev/sdb,UUID=“f20547b2-df53-46e5-b526-a8744be26231” 。
- mountpoint,指明挂载点位置。
# 创建挂载点
[root@webapp ~ 11:44:24]# mkdir /data# 显示系统中所有文件系统
[root@webapp ~ 11:44:39]# blkid
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda1: UUID="f4e6513a-53d5-4249-a6f2-1f7783d619ae" TYPE="xfs"
/dev/sda2: UUID="dZJ8lb-tNUe-seJy-nFvo-iTkv-EWrA-B61ct1" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="8ab0086b-6527-4805-a173-f353a4b72d5b" TYPE="xfs"
/dev/mapper/centos-swap: UUID="01dfb3c9-0719-45e2-af1a-2edf8f2df25a" TYPE="swap"
/dev/mapper/centos-home: UUID="dad219b3-da6b-419b-8734-1089eaec0a83" TYPE="xfs"
/dev/sdb: UUID="80ead328-3954-47dd-b2ca-af361c042fe5" TYPE="xfs" # 显示系统中特定文件系统
[root@webapp ~ 11:44:48]# blkid /dev/sdb
/dev/sdb: UUID="80ead328-3954-47dd-b2ca-af361c042fe5" TYPE="xfs"
[root@webapp ~ 11:44:59]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm /├─centos-swap 253:1 0 2G 0 lvm [SWAP]└─centos-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom # 挂载设备并验证
[root@webapp ~ 11:45:14]# mount /dev/sdb /data
[root@webapp ~ 11:45:28]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm /├─centos-swap 253:1 0 2G 0 lvm [SWAP]└─centos-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk /data
sr0 11:0 1 4.4G 0 rom # 验证
[root@webapp ~ 11:45:31]# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb 20G 33M 20G 1% /data# 创建文件测试
[root@webapp ~ 11:45:41]# touch /data/file-{1..6}
[root@webapp ~ 11:46:05]# ls /data
file-1 file-2 file-3 file-4 file-5 file-6
卸载文件系统
当文件系统不使用的时候,通过 umount 命令卸载。
umount命令语法:
umount device | dir
可以通过指定设备或者挂载点,卸载文件系统。
示例:
[root@webapp ~ 11:46:35]# umount /dev/sdb
[root@webapp ~ 11:46:47]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part ├─centos-root 253:0 0 50G 0 lvm /├─centos-swap 253:1 0 2G 0 lvm [SWAP]└─centos-home 253:2 0 47G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.4G 0 rom
[root@webapp ~ 11:46:51]# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 2.8G 48G 6% /
卸载失败
[root@webapp ~ 13:33:10]# mount /dev/sdb /data
[root@webapp ~ 13:34:16]# cd /data
[root@webapp data 13:34:25]# umount /dev/sdb
umount: /data:目标忙。(有些情况下通过 lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)
lsof 命令
lsof,list open files,用于查看系统打开的文件。
lsof 命令语法:
lsof [options] [names]
常用选项:
- -i,查看打开的 Internet 文件。例如
-i @10.1.8.20:22
、-i :80
- -p pid,根据进程PID查找特定进程打开的文件。
- -u uid,根据用户 uid查找特定用户打开的文件。
- names,是文件或者文件系统设备。
[root@webapp data 13:47:34]# lsof /data
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 16195 root cwd DIR 8,16 90 64 /data
lsof 22252 root cwd DIR 8,16 90 64 /data
lsof 22253 root cwd DIR 8,16 90 64 /data
查找系统中文件
locate
locate 命令根据文件名及其路径,在 mlocate 数据库中查找文件,并返回结果。数据库中存放文件和文件路径信息。
常规用户查找时,返回的结果仅包含用户有读取权限的目录树中匹配项。
查找文件前,需要root用户手动执行updatedb命令更新mlocate数据库。
注意:需要更新
[root@server ~ 16:43:15]# updatadb
locate命令语法:
locate [OPTION]... [PATTERN]...
常用选项:
- -b, --basename
- -i, --ignore-case
- -c, --count
- -r, --regexp
[root@server ~ 16:43:15]# yum install -y httpd
# 安装后,未跟新数据库,所以检索不到
[root@server ~ 16:57:03]# locate httpd.conf
locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录# 更新后查找
[root@server ~ 16:57:14]# updatedb
[root@server ~ 16:57:48]# locate httpd.conf
/etc/httpd/conf/httpd.conf
/root/httpd-2.4.60/docs/conf/httpd.conf
/root/httpd-2.4.60/docs/conf/httpd.conf.in
/root/httpd-2.4.60/modules/lua/test/test_httpd.conf
/root/httpd-2.4.60/test/pyhttpd/conf/httpd.conf.template
/usr/lib/tmpfiles.d/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/original/httpd.conf# -b选项 查找
[root@server ~ 16:57:51]# locate -b httpd
/etc/httpd
/etc/httpd/conf/httpd.conf
/etc/logrotate.d/httpd
/etc/sysconfig/httpd
/root/httpd-2.4.60
/root/httpd-2.4.60.tar.gz
/root/httpd-2.4.60.tar.gz.1
/root/httpd-2.4.60.tar.gz.2
/root/httpd-2.4.60.tar.gz.3
/root/httpd-2.4.60/httpd
/root/httpd-2.4.60/httpd.dep# 扩展
[root@server ~ 16:58:46]# basename /usr/share/doc
doc
[root@server ~ 16:59:58]# dirname /usr/share/doc
/usr/share# -i选项 忽略大小写
[root@server ~ 17:06:47]# locate PASSWD
/etc/PASSWD
/root/PASSWD[root@server ~ 17:14:32]# locate -i PASSWD
/etc/PASSWD
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/PASSWD
/root/httpd-2.4.60/docs/man/htpasswd.1
/root/httpd-2.4.60/docs/man/tr/htpasswd.1# -c选项 返回找到的数量
[root@server ~ 17:15:25]# locate -b -c PASSWD
2
find
find 命令在本地文件系统中执行实时查找文件。使用find命令的用户对文件夹必须有读取和执行权限。
语法:
find [path] [expression] [action]
- path,是查询路径,如果没有指定文件夹,将会查找当前目录及子目录。
- expression,是查询条件表达式。
- action,是找到文件后采取的动作。
根据文件 name 查找
[root@server ~ 20:28:46]# touch /etc/PASSWD
[root@server ~ 20:29:40]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd[root@server ~ 20:29:43]# find /etc/ -name '*passwd*'
/etc/passwd-
/etc/passwd
/etc/pam.d/passwd
/etc/security/opasswd#忽略大小写
[root@server ~ 20:30:57]# find /etc/ -iname passwd
/etc/passwd
/etc/pam.d/passwd
/etc/PASSWD
根据文件 type 查找
-type 根据文件类型查找,支持文件类型:
- b,block (buffered) special。
- c,character (unbuffered) special。
- d,directory。
- p,named pipe (FIFO)。
- f,regular file。
- l,symbolic link。
- s,socket。
根据文件 owner 查找
-user、-uid,属于特定用户。
[root@server ~ 20:31:04]# id dyx
uid=1000(dyx) gid=1000(dyx) 组=1000(dyx)
[root@server ~ 20:32:27]# find / -user dyx
/home/dyx
/home/dyx/.bash_logout
/home/dyx/.bash_profile
/home/dyx/.bashrc
/home/dyx/.bash_history
/home/dyx/.ssh
/home/dyx/.ssh/known_hosts
/home/dyx/.ssh/config
/home/dyx/.viminfo
find: ‘/proc/5083/task/5083/fd/6’: 没有那个文件或目录
find: ‘/proc/5083/task/5083/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/5083/fd/5’: 没有那个文件或目录
find: ‘/proc/5083/fdinfo/5’: 没有那个文件或目录
/var/tmp/yum-dyx-ZAA4NW
/var/tmp/yum-dyx-ZAA4NW/x86_64
/var/tmp/yum-dyx-ZAA4NW/x86_64/7
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel-debuginfo
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel-debuginfo/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel-debuginfo/packages
/var/spool/mail/dyx[root@server ~ 20:32:42]# find / -uid 1000
/home/dyx
/home/dyx/.bash_logout
/home/dyx/.bash_profile
/home/dyx/.bashrc
/home/dyx/.bash_history
/home/dyx/.ssh
/home/dyx/.ssh/known_hosts
/home/dyx/.ssh/config
/home/dyx/.viminfo
find: ‘/proc/5127/task/5127/fd/6’: 没有那个文件或目录
find: ‘/proc/5127/task/5127/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/5127/fd/5’: 没有那个文件或目录
find: ‘/proc/5127/fdinfo/5’: 没有那个文件或目录
/var/tmp/yum-dyx-ZAA4NW
/var/tmp/yum-dyx-ZAA4NW/x86_64
/var/tmp/yum-dyx-ZAA4NW/x86_64/7
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/base/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/extras/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/packages
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/repomd.xml
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/updates/cachecookie
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel-debuginfo
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel-debuginfo/gen
/var/tmp/yum-dyx-ZAA4NW/x86_64/7/epel-debuginfo/packages
/var/spool/mail/dyx
-group、-gid,属于特定组
[root@server ~ 20:36:26]# grep wheel /etc/group
wheel:x:10:
[root@server ~ 20:36:41]# find / -group wheel
find: ‘/proc/5361/task/5361/fd/6’: 没有那个文件或目录
find: ‘/proc/5361/task/5361/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/5361/fd/5’: 没有那个文件或目录
find: ‘/proc/5361/fdinfo/5’: 没有那个文件或目录
/var/lib/cockpit
[root@server ~ 20:36:54]# find / -gid 10
find: ‘/proc/5391/task/5391/fd/6’: 没有那个文件或目录
find: ‘/proc/5391/task/5391/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/5391/fd/5’: 没有那个文件或目录
find: ‘/proc/5391/fdinfo/5’: 没有那个文件或目录
/var/lib/cockpit
-nouser,不属于任何用户;-nogroup,不属于任何组
# 查找系统中不属于任何用户或者不属于任何组的文件
[root@server ~ 20:38:02]# find / -nouser -o -nogroup
... ...
根据文件 perm 查找
[root@server ~ 20:38:02]# mkdir lab
[root@server ~ 20:40:19]# cd lab
[root@server lab 20:40:36]# touch file-{1..6}
[root@server lab 20:40:57]# ls
file-1 file-2 file-3 file-4 file-5 file-6
[root@server lab 20:40:59]# ll file*
-rw-r--r-- 1 root root 0 9月 20 20:40 file-1
-rw-r--r-- 1 root root 0 9月 20 20:40 file-2
-rw-r--r-- 1 root root 0 9月 20 20:40 file-3
-rw-r--r-- 1 root root 0 9月 20 20:40 file-4
-rw-r--r-- 1 root root 0 9月 20 20:40 file-5
-rw-r--r-- 1 root root 0 9月 20 20:40 file-6
-perm mode,查找文件权限为mode的文件。
[root@server lab 20:41:12]# chmod 764 file-1
[root@server lab 20:42:04]# ll file*
-rwxrw-r-- 1 root root 0 9月 20 20:40 file-1
-rw-r--r-- 1 root root 0 9月 20 20:40 file-2
-rw-r--r-- 1 root root 0 9月 20 20:40 file-3
-rw-r--r-- 1 root root 0 9月 20 20:40 file-4
-rw-r--r-- 1 root root 0 9月 20 20:40 file-5
-rw-r--r-- 1 root root 0 9月 20 20:40 file-6#查找权限为764的文件,并显示出来
[root@server lab 20:42:08]# find -perm 764 |xargs ls -l
-rwxrw-r-- 1 root root 0 9月 20 20:40 ./file-1
-perm -mode,例如:mode为764,则ugo必须同时满足的最小权限:user至少为7、group至少为6、other为4。
[root@server lab 20:42:35]# chmod 777 file-1
[root@server lab 20:43:53]# chmod 764 file-2
[root@server lab 20:44:02]# chmod 760 file-3#只需大于等于
[root@server lab 20:44:36]# find . -perm -764 | xargs ls -l
-rwxrwxrwx 1 root root 0 9月 20 20:40 ./file-1
-rwxrw-r-- 1 root root 0 9月 20 20:40 ./file-2# 0作为通配符,表示不匹配对应权限位。
# 查找系统中具有suid权限的文件,允许用户以文件所有者的权限执行该文件
[root@server lab 20:46:00]# find . -perm -4000 |xargs ls -l
总用量 0
-rwxrwxrwx 1 root root 0 9月 20 20:40 file-1
-rwxrw-r-- 1 root root 0 9月 20 20:40 file-2
-rwxrw---- 1 root root 0 9月 20 20:40 file-3
-rw-r--r-- 1 root root 0 9月 20 20:40 file-4
-rw-r--r-- 1 root root 0 9月 20 20:40 file-5
-rw-r--r-- 1 root root 0 9月 20 20:40 file-6# 查找系统中同时具有特殊权限的文件:suid和sgid
[root@server lab 20:46:12]# find / -perm -6000 2>/dev/null |xargs ls -l
-perm /mode,例如mode为764,则ugo只要有一个满足即可:user至少为7、group至少为6、other至少为4。
[root@server lab 20:52:38]# chmod a=- file-1
[root@server lab 20:53:23]# chmod uo=-,g=rwx file-2
[root@server lab 20:53:29]# chmod ug=-,o=r file-3[root@server lab 20:53:44]# ll
总用量 0
---------- 1 root root 0 9月 20 20:40 file-1
----rwx--- 1 root root 0 9月 20 20:40 file-2
-------r-- 1 root root 0 9月 20 20:40 file-3
-rw-r--r-- 1 root root 0 9月 20 20:40 file-4
-rw-r--r-- 1 root root 0 9月 20 20:40 file-5
-rw-r--r-- 1 root root 0 9月 20 20:40 file-6[root@server lab 20:53:46]# find . -name 'file-*' -perm /764 |xargs ls -l
----rwx--- 1 root root 0 9月 20 20:40 ./file-2
-------r-- 1 root root 0 9月 20 20:40 ./file-3
-rw-r--r-- 1 root root 0 9月 20 20:40 ./file-4
-rw-r--r-- 1 root root 0 9月 20 20:40 ./file-5
-rw-r--r-- 1 root root 0 9月 20 20:40 ./file-6# 查找系统中具有特殊权限的文件:suid、sgid、sticky
[root@server lab 20:54:35]# find / -perm /7000
/dev/mqueue
/dev/shm
find: ‘/proc/6590/task/6590/fd/6’: 没有那个文件或目录
find: ‘/proc/6590/task/6590/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/6590/fd/5’: 没有那个文件或目录
find: ‘/proc/6590/fdinfo/5’: 没有那个文件或目录
/run/log/journal
/run/log/journal/659137a76dfb41c9aa750a3cb1073395
/var/tmp
/var/tmp/systemd-private-6909bd217e1f49a399d2fc3727edda15-chronyd.service-LfMLKS/tmp
/var/tmp/systemd-private-c74b793c391e452f8bbdf793f8c2c962-chronyd.service-mjL1mK/tmp
/var/tmp/systemd-private-17fe4c2a622a4c938ee7da07a3b93639-chronyd.service-rGktF7/tmp
/var/tmp/systemd-private-4768579758de4935adab9009cfe20f9d-chronyd.service-uKTFqy/tmp
/var/tmp/systemd-private-baf11d4ae0104023bebd1efe81fd7732-chronyd.service-qDEAPY/tmp
/var/tmp/systemd-private-1f79706ffbc1470f951676df770d715c-chronyd.service-ce2ZU3/tmp
/var/tmp/systemd-private-d0d89021f31e4b1883ccff0279980879-chronyd.service-bglt6f/tmp
/var/tmp/systemd-private-5131818773e04e1fac1ea0014957e7d7-chronyd.service-3FAqsk/tmp
/var/tmp/systemd-private-5131818773e04e1fac1ea0014957e7d7-nginx.service-IWVDyT/tmp
/tmp
/tmp/.font-unix
/tmp/.XIM-unix
/tmp/.Test-unix
/tmp/.X11-unix
/tmp/.ICE-unix
/tmp/systemd-private-6909bd217e1f49a399d2fc3727edda15-chronyd.service-lPtifc/tmp
/tmp/systemd-private-c74b793c391e452f8bbdf793f8c2c962-
... ...# 查找系统中具有特殊权限的文件:suid或者sgid
[root@server lab 20:56:11]# find / -perm /6000
find: ‘/proc/6652/task/6652/fd/6’: 没有那个文件或目录
find: ‘/proc/6652/task/6652/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/6652/fd/5’: 没有那个文件或目录
find: ‘/proc/6652/fdinfo/5’: 没有那个文件或目录
/run/log/journal
/run/log/journal/659137a76dfb41c9aa750a3cb1073395
/usr/bin/wall
/usr/bin/fusermount
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/su
/usr/bin/umount
/usr/bin/write
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/crontab
/usr/bin/ssh-agent
/usr/bin/passwd
/usr/bin/at
/usr/bin/locate
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/sbin/netreport
/usr/sbin/usernetctl
/usr/sbin/postdrop
/usr/sbin/postqueue
/usr/sbin/userhelper
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/libexec/utempter/utempter
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/cockpit-session
-readable -writable -executable,文件具有可读、可写、可执行。
根据文件 size 查找
单位 c(字节)、k(KiB)、M(MiB)、G(GiB)
# 大小等于10M
[root@server ~ 20:57:47]# find -size 10M# 大小大于10G
[root@server ~ 20:59:54]# find -size 10G
[root@server ~ 21:00:20]## 大小小于1k
[root@server ~ 21:01:12]# find -size -1k
./selinux/targeted/semanage.read.LOCK
./selinux/targeted/semanage.trans.LOCK
./selinux/targeted/contexts/files/file_contexts.subs
./lab/file-1
./lab/file-2
./lab/file-3
./lab/file-4
./lab/file-5
./lab/file-6# 大小等于2M
[root@server ~ 21:02:50]# find -size 2M
./selinux/targeted/contexts/files/file_contexts.bin
./GNU-Linux-x86/sersync2
# 注意:size会取整为2个单位,所以find -size 2M结果包含小于2M的文件。
# 可以使用1024k取代1M
[root@server ~ 21:03:55]# find -size 2048k
根据文件 time 查找
- -amin, -cmin, -mmin 单位1分钟。
- -atime, -ctime, -mtime 单位24小时。
- -newer file,比file新的文件。
# 10分钟以内(小于10分钟)
[root@server ~ 21:07:32]# find -amin -10# 10分钟前(正好10分钟)
[root@server ~ 21:07:40]# find -amin 10# 10分钟以前(大于10分钟)
[root@server ~ 21:08:05]# find -amin +10
... ...
./.viminfo
./PASSWD
./lab
./lab/file-1
./lab/file-2
./lab/file-3
./lab/file-4
./lab/file-5
./lab/file-6
根据文件硬链接数和 inum 查找
# 硬链接数等于、大于、小于3的文件
[root@server ~ 21:08:05]# find -links 3
./selinux/targeted/active
./selinux/targeted/modules
./selinux/targeted/modules/active
./.pki
[root@server ~ 21:09:21]# find -links +3
.
./selinux
./selinux/targeted
./selinux/targeted/active/modules
./selinux/targeted/active/modules/100
./selinux/targeted/contexts
[root@server ~ 21:09:33]# find -links -3
... ...
./etc.tar.gz
./.rnd
./myscript.sh
./etc.tar
./wget-log
./.viminfo
./PASSWD
./lab
./lab/file-1
./lab/file-2
./lab/file-3
./lab/file-4
./lab/file-5
./lab/file-6
多条件表达式
-
逻辑与: expr1 -a expr2 或者 expr1 expr2
[root@server lab 20:53:46]# find . -name 'file-*' -perm /764 |xargs ls -l
-
逻辑或:expr1 -o expr2
# 查找系统中不属于任何用户或者不属于任何组的文件 [root@server ~ 20:38:02]# find / -nouser -o -nogroup[root@server ~ 21:09:46]# find / -perm /7000 /dev/mqueue /dev/shm find: ‘/proc/7778/task/7778/fd/6’: 没有那个文件或目录 find: ‘/proc/7778/task/7778/fdinfo/6’: 没有那个文件或目录 find: ‘/proc/7778/fd/5’: 没有那个文件或目录 find: ‘/proc/7778/fdinfo/5’: 没有那个文件或目录 /run/log/journal /run/log/journal/659137a76dfb41c9aa750a3cb1073395 /var/tmp /var/tmp/systemd-private-6909bd217e1f49a399d2fc3727edda15-chronyd.service-LfMLKS/tmp ... ... [root@server ~ 21:13:10]# find / -perm -4000 -o -perm -2000 -o -perm -1000 /dev/mqueue /dev/shm \find: ‘/proc/7808/task/7808/fd/6’: 没有那个文件或目录 find: ‘/proc/7808/task/7808/fdinfo/6’: 没有那个文件或目录 find: ‘/proc/7808/fd/5’: 没有那个文件或目录 find: ‘/proc/7808/fdinfo/5’: 没有那个文件或目录 /run/log/journal /run/log/journal/659137a76dfb41c9aa750a3cb1073395 /var/tmp /var/tmp/systemd-private-6909bd217e1f49a399d2fc3727edda15-chronyd.service-LfMLKS/tmp ... ...
-
逻辑非:! expr
[root@server ~ 21:13:45]# find / ! -size -200M 2>/dev/null /proc/kcore /proc/7908/task/7908/fd/6 /proc/7908/task/7908/fdinfo/6 /proc/7908/fd/5 /proc/7908/fdinfo/5 /usr/share/nginx/html/dvd/LiveOS/squashfs.img[root@server ~ 21:15:26]# ls -lh /proc/kcore -r-------- 1 root root 128T 9月 20 21:15 /proc/kcore
action
-delete,查出找到的文件。
[root@server ~ 21:16:55]# find / -name PASSWD
/etc/PASSWD
/root/PASSWD
/tmp/PASSWD[root@server ~ 21:18:11]# find / -name PASSWD -delete
[root@server ~ 21:18:21]# find / -name PASSWD
[root@server ~ 21:18:26]#
-ls*,相当于
ls -dils
查看找到的文件。
[root@server ~ 21:18:26]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd[root@server ~ 21:19:30]# find /etc/ -name passwd -ls
67645782 4 -rw-r--r-- 1 root root 1413 9月 18 22:32 /etc/passwd
34163844 4 -rw-r--r-- 1 root root 188 4月 1 2020 /etc/pam.d/passwd
-exec command {} ;,找到文件后,可以在命令中对文件操作。
[root@server ~ 21:19:43]# find / -inum 67160130
/etc/fstab
# 将inode为67160130的所有文件复制到当前目录
[root@server ~ 21:21:47]# find / -inum 67160130 -exec cp -a {} ./findfiles \;[root@server ~ 21:23:32]# ls findfiles
fstab
-exec command ;,找到文件后,执行相应的command。
[root@server ~ 21:23:37]# find /etc/ -name passwd -exec echo haha \;haha
haha