当前位置: 首页 > news >正文

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 920 20:40 file-1
-rw-r--r-- 1 root root 0 920 20:40 file-2
-rw-r--r-- 1 root root 0 920 20:40 file-3
-rw-r--r-- 1 root root 0 920 20:40 file-4
-rw-r--r-- 1 root root 0 920 20:40 file-5
-rw-r--r-- 1 root root 0 920 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 920 20:40 file-1
-rw-r--r-- 1 root root 0 920 20:40 file-2
-rw-r--r-- 1 root root 0 920 20:40 file-3
-rw-r--r-- 1 root root 0 920 20:40 file-4
-rw-r--r-- 1 root root 0 920 20:40 file-5
-rw-r--r-- 1 root root 0 920 20:40 file-6#查找权限为764的文件,并显示出来
[root@server lab 20:42:08]# find -perm 764 |xargs ls -l
-rwxrw-r-- 1 root root 0 920 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 920 20:40 ./file-1
-rwxrw-r-- 1 root root 0 920 20:40 ./file-2# 0作为通配符,表示不匹配对应权限位。
# 查找系统中具有suid权限的文件,允许用户以文件所有者的权限执行该文件
[root@server lab 20:46:00]# find . -perm -4000 |xargs ls -l 
总用量 0
-rwxrwxrwx 1 root root 0 920 20:40 file-1
-rwxrw-r-- 1 root root 0 920 20:40 file-2
-rwxrw---- 1 root root 0 920 20:40 file-3
-rw-r--r-- 1 root root 0 920 20:40 file-4
-rw-r--r-- 1 root root 0 920 20:40 file-5
-rw-r--r-- 1 root root 0 920 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 920 20:40 file-1
----rwx--- 1 root root 0 920 20:40 file-2
-------r-- 1 root root 0 920 20:40 file-3
-rw-r--r-- 1 root root 0 920 20:40 file-4
-rw-r--r-- 1 root root 0 920 20:40 file-5
-rw-r--r-- 1 root root 0 920 20:40 file-6[root@server lab 20:53:46]# find . -name 'file-*' -perm /764 |xargs ls -l
----rwx--- 1 root root 0 920 20:40 ./file-2
-------r-- 1 root root 0 920 20:40 ./file-3
-rw-r--r-- 1 root root 0 920 20:40 ./file-4
-rw-r--r-- 1 root root 0 920 20:40 ./file-5
-rw-r--r-- 1 root root 0 920 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
多条件表达式
  1. 逻辑与: expr1 -a expr2 或者 expr1 expr2

    [root@server lab 20:53:46]# find . -name 'file-*' -perm /764 |xargs ls -l
    
  2. 逻辑或: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
    ... ... 
  3. 逻辑非:! 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 920 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
http://www.dtcms.com/a/393423.html

相关文章:

  • 2.1 进程与线程 (答案见原书 P57)
  • SDL2 开发详解
  • c++ 深拷贝之 std::string 与 char*
  • [数理逻辑] 决定性公理与勒贝格可测性(II) 一维情况
  • [Tongyi] DeepResearch Model | MODEL_PATH
  • 儿童对话玩具模型设计与实现
  • 生成器迁移的偏差消除条件
  • LeetCode 刷题【86. 分隔链表】
  • 回溯.专题
  • QML学习笔记(五)QML新手入门其三:使用Row和Colunm进行简单布局
  • 【视图功能11】视图权限控制与协作场景实践
  • YOLOv5至YOLOv12升级:交通标志识别系统的设计与实现(完整代码+界面+数据集项目)
  • 双指针算法案例:有序顺序表的交并差
  • syn和quote实现派生宏Builder
  • MQTT消息质量等级——QoS
  • 【OpenGL】shader 着色器
  • 给AI装上“眼睛”:Schema标记和技术性GEO实战部署
  • 中超-克雷桑破门 齐鲁德比泰山2-2遭海牛读秒绝平!
  • gitflow在公司的全流程
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘grpc’ 问题
  • C语言第17讲
  • 人机协同开发中的“深水炸弹”——指令上下文混淆
  • 朴素贝叶斯算法详解:原理、应用与实践
  • 强化学习的数学原理-02章 贝尔曼公式
  • C++:入门基础(2)
  • 数据架构章节考试考点及关系梳理
  • 用TRAE编程助手编写一个浏览器插件
  • 赋能工业未来:向成电子XC3576H工控主板多领域应用前景
  • Multi-Agent多智能体系统(三)
  • 【语法进阶】高级用法、贪婪与非贪婪