linux基础(十六)设备访问、软硬链接、文件查找

时间:2021-01-30 05:17:18

####1.设备访问####

1.设备识别

/dev/xdxn ##硬盘设备/dev/sda1

/dev/cdrom ##光驱

/dev/mapper/* ##虚拟设备

 

2.设备的使用

##《设备的发现》##

fdisk -l ##查看真实存在的设备

cat /proc/partitions ##系统能够识别的设备

blkid ##系统能够挂载使用的设备id

df ##查看设备被系统使用的情况

 

 

##《设备的使用》##

1.设备的挂载

mount  设备 挂载点

mount  /dev/sdb1 /mnt #把系统中第二块硬盘的第一个分区挂载到/mnt目录上

 

2.卸载设备

umout 设备|挂载点

 

如出现以下情况:

[root@foundation0 ~]# umount /dev/sdb1 

umount: /home/kiosk/Desktop/photo: target is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

解决:

fuser -kvm  设备|挂载点 -k kill -v显示详细信息,-m扫描设备

他的作用是会把阻止卸载这个设备的进程强制关闭掉

 

####2.软硬链接###

ls -i ##查看文件节点号

文件节点是磁盘中真正记录文件内容的部分,平时看到的文件只是这些节点显示到文件夹表面来的内容而已,因此,就算删除掉文件夹里面所有能看到的内容,只要文件节点没有被新的文件内容占用还是可以根据这些文件节点将表面文件再次还原出来。

ln -s /file /file1 ##软链接     file1作为file的软链接

ln /file /file1 ##硬链接

说明:软链接可以等同于windows中的快捷方式,修改file1文件就相当于修改了file里的内容。删除快捷方式原文件还在,删除原文件快捷方式就失去意义。

      硬链接则是将一个文件节点记录的内容做出了2份表面的文件(我们平时能看到的文件),和软链接一样修改filefile1其中一个,另一个也会改变。删除其中一个另一个依然可以正常使用。

[root@server mnt]# touch file

[root@server mnt]# touch test

[root@server mnt]# ln -s file lnsfi

[root@server mnt]# ln test yinglianjie

[root@server mnt]# ls -li

total 4

8846812 -rw-r--r--. 1 root root 35 Nov  9 03:47 file

8846787 lrwxrwxrwx. 1 root root  4 Nov  9 03:47 lnsfi -> file

8846811 -rw-r--r--. 2 root root  0 Nov  9 04:14 test

8846811 -rw-r--r--. 2 root root  0 Nov  9 04:14 yinglianjie

可以看到硬链接和原文件的节点号一样,并且被读了两次。一般文件节点只会被读取一次

 

 

 

 

####3.文件查找####

1.locate filename ##在文件数据库中搜索filename信息,updatedb更新文件数据库

如果有系统开机之后新建立的文件并且刚好要找这个文件,先执行updatedb命令再查找比较靠谱,否则有可能查不到

 

2.find

 

find  查找位置 -条件 条件值  -exec 动作 {} \; 

-name+名字 

-not +条件              ##表示不是这个条件的

-user+用户名              ##属于用户

-group+组名

-size+文件大小

-perm

-maxdepth +数字

-mindepth +数字

-a                       ##

-o                       ##

-type f 文件

      d 目录

      c 字符设备

    b 块设备

    s 套节字

    l 链接

测试:

1

[root@station Desktop]# find / -name *.iso

find: /run/user/1000/gvfs权限不够

/home/iso/rhel-server-7.0-x86_64-dvd.iso

/home/iso/rhel-server-7.2-x86_64-dvd.iso

2

find /mnt -user student     ##/mnt下属于student用户的文件和目录      

find /mnt -group linux      ##/mnt下属于linux组的文件和目录

3

find /mnt -user student -a -group linux  #/mnt下既属于student用户又属于linux组的目录和文件

find /mnt -user student -o -group linux   ##/mnt下属于student用户或者属于linux组的目录和文件

find /mnt -user student -a -not -group linux   ##/mnt下属于student用户同时不属于linux组的目录和文件

4

cd /mnt

dd if=/dev/zero of=/mnt/file1 bs=1024 count=10

dd if=/dev/zero of=/mnt/file2 bs=1024 count=20

dd if=/dev/zero of=/mnt/file3 bs=1024 count=30

使用dd命令分出一个10k大小的file1文件、20kfile230kfile3

[root@server1 mnt]# find /mnt/ -size 10k      ##找大小为10k的文件/目录

/mnt/file1

[root@server1 mnt]# find /mnt/ -size -10k     ##找小于10k的文件/目录

/mnt/

[root@server1 mnt]# find /mnt/ -size +10k    ##找大于10k的文件/目录

/mnt/file2

/mnt/file3

5

[root@server1 mnt]# mkdir /etc/redhat/linux -p

[root@server1 mnt]# touch /etc/redhat/linux/passwd

 

最大找/etc下两层目录的passwd文件/目录

[root@server1 mnt]# find /etc/ -maxdepth 2 -name passwd

/etc/passwd

/etc/pam.d/passwd

最少找/etc下三层目录的passwd文件/目录

[root@server1 mnt]# find /etc/ -mindepth 3 -name passwd

/etc/redhat/linux/passwd

/etc下一层目录直到三层目录的passwd文件/目录

[root@server1 mnt]# find /etc/ -mindepth 1 -maxdepth 3 -name passwd

/etc/passwd

/etc/pam.d/passwd

/etc/redhat/linux/passwd

6

find /mnt/direct -perm

    444+444 都表示为444的权限

    /444表示只要有一位为r的权限即可

    -111表示只要有三个-x的权限即可

e.g:

[root@client42 direct]# ll

total 0

-rwxrwxrwx. 1 root root 0 Nov  8 11:32 file1

-rw-rw-rw-. 1 root root 0 Nov  8 11:32 file2

-r--r--r--. 1 root root 0 Nov  8 11:32 file3

[root@client42 direct]# find /mnt/direct -perm 444

/mnt/direct/file3

[root@client42 direct]# find /mnt/direct -perm /444

/mnt/direct

/mnt/direct/file1

/mnt/direct/file2

/mnt/direct/file3

[root@client42 direct]# find /mnt/direct -perm +444

/mnt/direct/file3

[root@client42 direct]# find /mnt/direct -perm -111

/mnt/direct

/mnt/direct/file1

[root@client42 direct]# chmod 776 file1 

[root@client42 direct]# ll

total 0

-rwxrwxrw-. 1 root root 0 Nov  8 11:32 file1

-rw-rw-rw-. 1 root root 0 Nov  8 11:32 file2

-r--r--r--. 1 root root 0 Nov  8 11:32 file3

[root@client42 direct]# find /mnt/direct -perm -111

/mnt/direct

[root@client42 direct]# chmod 442 file3

[root@client42 direct]# find /mnt/direct -perm /444

/mnt/direct

/mnt/direct/file1

/mnt/direct/file2

/mnt/direct/file3

[root@client42 direct]# ll

total 0

-rwxrwxrw-. 1 root root 0 Nov  8 11:32 file1

-rw-rw-rw-. 1 root root 0 Nov  8 11:32 file2

-r--r---w-. 1 root root 0 Nov  8 11:32 file3

7exec

查找属于mail组的文件或目录拷贝到当前目录下

[root@server1 mnt]# find / -group mail -exec cp -rp {} . \;

## cp -rp中的p表示不改变用户所属进行复制

##这条命令的缺陷是会把一样名称的文件/目录覆盖

[root@server1 mnt]# ll

总用量 104

-rw-rw----. 1 linux   mail     0 11月  6 23:18 linux

drwxrwxr-x. 2 root    mail    67 11月  7 03:07 mail

-rw-------. 1 root    mail 97179 11月  7 03:07 root

-rw-rw----. 1 rpc     mail     0 10月 17 15:21 rpc

-rw-rw----. 1 server1 mail     0 10月 17 16:41 server1

-rw-rw----. 1 student mail  7503 11月  2 14:04 student