最全最易懂的文件属性信息

 

11 linux中文件的属性

11.1 linux系统的组成部分

11.1.1 系统的组成部分有哪些

[root@oldboy6666 ~] # ls -li

total 12

134318489 -rw-r--r-- 1 root root 28 Sep 16 16:53 1.txt

134318478 -rw-------. 1 root root 1502 Aug 30 12:16 anaconda-ks.cfg

202147906 drwxr-xr-x. 2 root root 6 Sep 9 11:23 oldboy01

134340492 -rw-r--r--. 1 root root 986 Sep 2 14:36 passwd

  • 134318489 属于文件的inode
    • 属于文件的类型
  • rw-r --r-- 属于文件的权限
  • 1 属于文件的硬连接数
  • root 属于文件的属主
  • root 属于文件的属组
  • 28 属于文件的block(文件的实际大小)
  • Sep 16 16:53 属于文件的时间类型
  • 1.txt 属于文件的文件名称(文件名称不属于文件属性)

11.1.2 图示系统的组成部分

11.2 linux系统的组成部分__文件类型

  1. 常见的文件类型有哪些

  • 普通文件(-)
    • 文本文件
    • 二进制文件(命令文件)
    • 脚本文件
    • 数据文件
  • 目录文件(d)
  • 链接文件(l)
  • 套接字文件(s)------------socket(网络编程方面的)
  • 设备文件
    • 字符流文件(c)-----character(可以产生随机数)
    • 块设备文件(b)-----block(设备文件,挂载的存储数据)

11.2.2 查看普通文件类型的方法

命令为file命令

11.2.2.1 文本文件

[root@oldboy6666 ~] # file 1.txt

1.txt: ASCII text

[root@oldboy6666 ~] #

11.2.2.2 二进制文件

[root@oldboy6666 ~] # file /usr/bin/cp

/usr/bin/cp: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=d5e29bd19107fc7c0a75cffa392da6ac299add6d, stripped

[root@oldboy6666 ~] #

11.2.2.3 脚本文件

[root@oldboy6666 ~] # file /server/scripts/test_ping.sh

/server/scripts/test_ping.sh: Bourne-Again shell script, ASCII text executable

[root@oldboy6666 ~] #

11.2.2.4 数据文件

[root@oldboy6666 ~] # file /usr/share/doc/automake-1.13.4/amhello-1.0.tar.gz

/usr/share/doc/automake-1.13.4/amhello-1.0.tar.gz: gzip compressed data, from Unix, last modified: Sat Jun 15 00:05:35 2013, max compression

[root@oldboy6666 ~] #

 

 

11.2.3 查找命令的总结

11.2.3.1 locate命令的使用

安装失败

[root@oldboy6666 ~] # yum install -y locate

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

No package locate available.

Error: Nothing to do

查看安装包的名字----provides

[root@oldboy6666 ~] # yum provides locate

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

base/7/x86_64/filelists_db | 7.1 MB 00:00:12

epel/x86_64/filelists_db | 12 MB 00:00:20

extras/7/x86_64/filelists_db | 249 kB 00:00:00

updates/7/x86_64/filelists_db | 5.2 MB 00:00:09

mlocate-0.26-8.el7.x86_64 : An utility for finding files by name

Repo : base

Matched from:

Filename : /usr/bin/locate

重新安装

[root@oldboy6666 ~] # yum install -y mlocate

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

Resolving Dependencies

1/1 Installed:

mlocate.x86_64 0:0.26-8.el7

 

Complete!

查找文件(查找1.txt所在的地方,结果查找失败)

[root@oldboy6666 ~] # locate 1.txt

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

[root@oldboy6666 ~] #

更新数据库再次查找

[root@oldboy6666 ~] # updated 更新数据库

[root@oldboy6666 ~] # locate 1.txt

/.1.txt.swp

/1.txt

/etc/pki/nssdb/pkcs11.txt

/opt/1.txt

/root/1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.3.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.6.6.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.12.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.5.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.8.0.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.8.2.1.txt

/usr/share/doc/git-1.8.3.1/RelNotes/1.8.3.1.txt

/usr/share/man/man5/pkcs11.txt.5.gz

/usr/share/vim/vim74/doc/gui_x11.txt.gz

/usr/share/vim/vim74/doc/usr_01.txt.gz

/usr/share/vim/vim74/doc/usr_11.txt.gz

/usr/share/vim/vim74/doc/usr_21.txt.gz

/usr/share/vim/vim74/doc/usr_31.txt.gz

/usr/share/vim/vim74/doc/usr_41.txt.gz

[root@oldboy6666 ~] #

11.2.3.2 locate命令的执行原理,图示讲解

11.2.3.3 find命令的使用

语法格式:find 路径 执行的参数

根据文件名称进行查找(-name,-iname(不区分大小写))

  • 查找/root/oldboy01目录下1.txt的文件

[root@oldboy6666 ~] # find /root/oldboy01 -name "1.txt"

/root/oldboy01/1.txt

/root/oldboy01/oldboy02/1.txt

[root@oldboy6666 ~] #

  • 查找/root/oldboy01目录下a(A).txt的文件

[root@oldboy6666 oldboy02] # find /root/oldboy01 -iname "a.txt"

/root/oldboy01/oldboy02/a.txt

/root/oldboy01/oldboy02/A.txt

/root/oldboy01/a.txt

[root@oldboy6666 oldboy02] #

根据文件的类型进行查找(-type)

  • 文件 f
  • 目录 d
  • 链接 l
  • 块设备 b
  • 字符流 c
  • 套接字 s
  • 查找/root/oldboy01目录下文件的并且名字为a.txt的文件

[root@oldboy6666 oldboy02] # find /root/oldboy01 -type f -name "a.txt"

/root/oldboy01/oldboy02/a.txt

/root/oldboy01/a.txt

[root@oldboy6666 oldboy02] #

根据文件的大小进行查找(-size)

常见的文件大小单位

  • c 字节单位
  • b 块设备(512字节,块设备查找只能是512字节的倍数才能查找出来)
  • w (1w=2字节)
  • K KB
  • M MB
  • G GB
  • 查找/root/oldboy01目录下文件大于1M的

[root@oldboy6666 oldboy01] # find /root/oldboy01 -size +1M

/root/oldboy01/2.txt

/root/oldboy01/4.txt

[root@oldboy6666 oldboy01] #

注意

+1M:查找大于1M的文件

-1M:查找小于1M的文件

1M:查找等于1M的文件

根据文件的权限来进行查找(-perm)

  • 查找文件的权限为755的文件或者目录

[root@oldboy6666 oldboy01] # find /root/oldboy01 -perm 755

/root/oldboy01

/root/oldboy01/oldboy02

/root/oldboy01/2.txt

[root@oldboy6666 oldboy01] #

根据文件的修改时间来进行查找(-mtime)

  • 查找文件的修改时间在7天之内的

[root@oldboy6666 oldboy01] # find /root/oldboy01 -mtime -7

/root/oldboy01

/root/oldboy01/1.txt

/root/oldboy01/oldboy02

/root/oldboy01/oldboy02/2.txt

/root/oldboy01/oldboy02/1.txt

/root/oldboy01/oldboy02/a.txt

/root/oldboy01/oldboy02/A.txt

/root/oldboy01/a.txt

/root/oldboy01/2.txt

/root/oldboy01/3.txt

/root/oldboy01/4.txt

/root/oldboy01/5.txt

[root@oldboy6666 oldboy01] #

注意

  • +7 代表7天以前的信息文件
  • -7 代表7天之内的信息文件
  • 7 代表正好是第7天的信息文件

根据文件的路径进行查找(-path)

  • 查找/root/oldboy01/oldboy02目录

[root@oldboy6666 oldboy01] # find /root/oldboy01 -path /root/oldboy01/oldboy02

/root/oldboy01/oldboy02

  • 02目录和里面的文件进行排除

[root@oldboyedu oldboy02] # find /oldboy02 -path "/oldboy02/02" -prune -o -name "*.txt" -print 第一种

/oldboy02/01/01.txt

/oldboy02/01/02.txt

/oldboy02/01/03.txt

/oldboy02/03/01.txt

/oldboy02/03/02.txt

/oldboy02/03/03.txt

[root@oldboyedu oldboy02] #

 

[root@oldboyedu oldboy02] # find /oldboy02 ! -path "/oldboy02/02/*" ! -path "/oldboy02/02" 第二种

/oldboy02

/oldboy02/01

/oldboy02/01/01.txt

/oldboy02/01/02.txt

/oldboy02/01/03.txt

/oldboy02/03

/oldboy02/03/01.txt

/oldboy02/03/02.txt

/oldboy02/03/03.txt

根据文件的inode来进行查找(-inum)

  • 查找inode的数为202165184

[root@oldboy6666 oldboy01] # ll -i

total 13324

202165181 -rwxrw-rw- 1 root root 0 Sep 16 19:14 1.txt

202120440 -rwxr-xr-x 1 root root 2097152 Sep 16 19:28 2.txt

202120442 -rwxrw-rw- 1 root root 1048576 Sep 16 19:28 3.txt

202118699 -rwxrw-rw- 1 root root 10485760 Sep 16 19:28 4.txt

202035674 -rwxrw-rw- 1 root root 10240 Sep 16 19:28 5.txt

202035661 -rwxrw-rw- 1 root root 0 Sep 16 19:19 a.txt

202165184 -rw-r--r-- 2 root root 0 Sep 16 19:14 hard.txt

202165182 drwxr-xr-x 2 root root 58 Sep 16 19:19 oldboy02

[root@oldboy6666 oldboy01] # find /root/oldboy01/ -inum "202165184"

/root/oldboy01/oldboy02/1.txt

/root/oldboy01/hard.txt

[root@oldboy6666 oldboy01] #

根据文件的最大深度进行查找(-maxdepth)

查找/etc/目录下面最大深度为1的目录,并且统计有多少个目录

[root@oldboy6666 ~] # find /etc -maxdepth 1 -type d | wc -l

80

[root@oldboy6666 ~] #

根据文件的最小深度进行查找(mindepth)

查找/etc/目录下面最小深度为2的目录,并且统计有多少个目录

[root@oldboy6666 ~] # find /etc -mindepth 2 -type d | wc -l

534

[root@oldboy6666 ~] #

 

 

11.2.3.4 查找文件的信息,并且进行删除

-delete参数的使用

[root@oldboy6666 oldboy01] # find /root/oldboy01/ -inum "202165184"

/root/oldboy01/oldboy02/1.txt

/root/oldboy01/hard.txt

[root@oldboy6666 oldboy01] # find /root/oldboy01/ -inum "202165184" -delete

[root@oldboy6666 oldboy01] # find /root/oldboy01/ -inum "202165184"

[root@oldboy6666 oldboy01] #

-exec命令的使用

\;和+;的区别

1.exec执行原理不同

  • \;会查找出来一条数据就会进行直接处理,处理完成才会进行第二条数据的处理,直到处理完毕
  • +;会讲所有数据查询完毕,在一起处理,例如(tar命令打包操作)

2.输入方式有区别

  • \;可以在{}后面添加数据
  • +;只能和{}直接相连,不能中间插入数据

查找文件并且删除(使用\来解决)

[root@oldboy6666 oldboy02] # find /root/oldboy01/ -name "2.txt"

/root/oldboy01/oldboy02/2.txt

/root/oldboy01/2.txt

[root@oldboy6666 oldboy02] # find /root/oldboy01/ -name "2.txt" -exec rm {} \;

[root@oldboy6666 oldboy02] # find /root/oldboy01/ -name "2.txt"

 

[root@oldboy6666 oldboy02] #

 

将文件进行打包(使用+号来不进行覆盖,进行累加)

[root@oldboy6666 tmp] # find /oldboy -name "*.txt" -exec tar zcvf /tmp/oldboy1.tar.gz {} +;
tar: Removing leading `/' from member names
/oldboy/1.txt
/oldboy/2.txt
/oldboy/3.txt
/oldboy/4.txt
/oldboy/aa.txt
/oldboy/bb.txt
[root@oldboy6666 tmp] # tar tf oldboy1.tar.gz 
oldboy/1.txt
oldboy/2.txt
oldboy/3.txt
oldboy/4.txt
oldboy/aa.txt
oldboy/bb.txt
[root@oldboy6666 tmp] #

xargs命令的使用

[root@oldboy6666 oldboy02] # find /root/oldboy01/ -name "3.txt"

/root/oldboy01/3.txt

[root@oldboy6666 oldboy02] # find /root/oldboy01/ -name "3.txt" |xargs rm

[root@oldboy6666 oldboy02] # find /root/oldboy01/ -name "3.txt"

[root@oldboy6666 oldboy02] #

11.2.3.5 xargs命令的常用参数和使用方法

xargs -n num:分组为n num,

[root@oldboy6666 oldboy01] # find /root/oldboy01/ -name "*.txt" | xargs -n2

/root/oldboy01/oldboy1.txt /root/oldboy01/oldboy2.txt

/root/oldboy01/oldboy3.txt /root/oldboy01/oldboy4.txt

/root/oldboy01/oldboy5.txt /root/oldboy01/oldboy6.txt

/root/oldboy01/oldboy7.txt /root/oldboy01/oldboy8.txt

/root/oldboy01/oldboy9.txt /root/oldboy01/oldboy10.txt

[root@oldboy6666 oldboy01] #

 

xargs -i :将执行结果放循环放到后面的{}里面

[root@oldboy6666 oldboy01] # find /root/oldboy01/ -name "*.txt" | xargs -i cp {} /tmp/oldboy_tmp/

[root@oldboy6666 oldboy01] # cd /tmp/oldboy_tmp/

 

[root@oldboy6666 oldboy_tmp] # ls

oldboy10.txt oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt oldboy6.txt oldboy7.txt oldboy8.txt oldboy9.txt

[root@oldboy6666 oldboy_tmp] #

11.2.3.4 which命令

查找命令文件保存的路径

[root@oldboy6666 oldboy] # which cp

alias cp='cp -i'

    /usr/bin/cp

[root@oldboy6666 oldboy] #

11.2.3.5 whereis命令

查找命令文件的路径和其他有关于此命令的全部信息

[root@oldboy6666 oldboy] # whereis cp

cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz

[root@oldboy6666 oldboy] #

11.2.4 压缩、解压、查看的命令

11.2.4.1 压缩命令

压缩常见的参数详解

标准模式czvf 特殊模式:czvPhf

  • c 创建一个压缩文件
  • z 压缩成gzip文件格式的
  • v 详细显示压缩的过程
  • f 指定压缩包的路径
  • h 压缩的时候不会压缩软连接文件,会直接压缩真正的文件
  • P 压缩的时候采用绝对路径的压缩,解压的时候也是,(会造成文件的覆盖)
  • --exclude-from=指定的文件 将文件中的内容排除,不进行打包
  • --exclude=排除的文件目录 将指定的文件进行排除

    压缩文件格式

格式:tar czvf 压缩包的名字 压缩的数据

/root/oldboy01/下面的文件找到,并且进行打包,打包名字为oldboy_tar.tar.gz

[root@oldboy6666 ~] # find /root/oldboy01/ -name "*.txt" | xargs tar czvf /root/oldboy_tar.tar.gz

tar: Removing leading `/' from member names

/root/oldboy01/oldboy1.txt

/root/oldboy01/oldboy2.txt

/root/oldboy01/oldboy3.txt

/root/oldboy01/oldboy4.txt

/root/oldboy01/oldboy5.txt

/root/oldboy01/oldboy6.txt

/root/oldboy01/oldboy7.txt

/root/oldboy01/oldboy8.txt

/root/oldboy01/oldboy9.txt

/root/oldboy01/oldboy10.txt

[root@oldboy6666 ~] # ls

anaconda-ks.cfg oldboy01 oldboy_tar.tar.gz passwd

[root@oldboy6666 ~] #

/etc/rc.local进行打包(必须加参数h,要不就的去打包本身的路径)

[root@oldboy6666 ~] # tar zcvfh rc.local.tar.gz /etc/rc.local

tar: Removing leading `/' from member names

/etc/rc.local

[root@oldboy6666 ~] # ls

anaconda-ks.cfg h oldboy01 oldboy_tar.tar.gz passwd rc.local.tar.gz

[root@oldboy6666 ~] # tar tf rc.local.tar.gz

etc/rc.local

[root@oldboy6666 ~] #

 

将/oldboy/oldboy01下面的a.txt,b.txt打包, 将/oldboy/oldboy02下面的c.txt,a.txt不打包,剩余的打包

  1. 使用- -exclude-from方法解决

[root@oldboy6666 oldboy] # tar zcvf oldboy01.tar.gz ./oldboy01 ./oldboy02 --exclude-from=./1.txt

./oldboy01/

./oldboy01/a.txt

./oldboy01/b.txt

./oldboy02/

./oldboy02/b.txt

./oldboy02/c.txt

[root@oldboy6666 oldboy] # cat 1.txt

./oldboy01/c.txt

./oldboy02/a.txt

[root@oldboy6666 oldboy] #

 

(2)使用- -exclude进行解决

[root@oldboy6666 oldboy] # tar zcvf oldboy01.tar.gz ./oldboy01 --exclude=./oldboy01/c.txt ./oldboy02 --exclude=./oldboy02/a.txt

./oldboy01/

./oldboy01/a.txt

./oldboy01/b.txt

./oldboy02/

./oldboy02/b.txt

./oldboy02/c.txt

[root@oldboy6666 oldboy] #

解答

  • tar: Removing leading `/' from member names?

出现这个问题是因为:一个警告,告诉你打包的时候会将根排除,因为如果将根打包会造成解压的时候数据覆盖

解决办法

  • 采取相对路径进行打包操作
  • 采取带P参数进行操作

11.2.4.2 查看压缩命令

查看压缩文件的格式

tar tf 查看的压缩包

查看oldboy_tar.tar.gz里面的内容是否压缩完整

[root@oldboy6666 ~] # tar tf oldboy_tar.tar.gz

root/oldboy01/oldboy1.txt

root/oldboy01/oldboy2.txt

root/oldboy01/oldboy3.txt

root/oldboy01/oldboy4.txt

root/oldboy01/oldboy5.txt

root/oldboy01/oldboy6.txt

root/oldboy01/oldboy7.txt

root/oldboy01/oldboy8.txt

root/oldboy01/oldboy9.txt

 

[root@oldboy6666 ~] #

11.2.4.3 解压命令

解压常见的参数

  • x 进行解压
  • -C 指定解压的路径

    解压格式

tar xf 解压的压缩包

oldboy01.tar.gz进行解压

[root@oldboy6666 oldboy_tmp] # tar xf oldboy01.tar.gz

[root@oldboy6666 oldboy_tmp] # ls

oldboy01.tar,gz oldboy01.tar.gz root

[root@oldboy6666 oldboy_tmp] # ls

oldboy01.tar,gz oldboy01.tar.gz root

[root@oldboy6666 oldboy_tmp] # ls

oldboy01.tar,gz oldboy01.tar.gz root

[root@oldboy6666 oldboy_tmp] # cd /root/oldboy01/

[root@oldboy6666 oldboy01] # ls

oldboy02 oldboy10.txt oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt oldboy6.txt oldboy7.txt oldboy8.txt oldboy9.txt

[root@oldboy6666 oldboy01] #

 

oldboy01.tar.gz解压到/tmp目录下

[root@oldboy6666 oldboy] # ls

oldboy01.tar.gz oldboy01.txt oldboy02.txt oldboy03.txt

[root@oldboy6666 oldboy] # tar xf oldboy01.tar.gz -C /tmp

[root@oldboy6666 oldboy] # cd -

/tmp

[root@oldboy6666 tmp] # ls

oldboy01.txt oldboy02.txt oldboy03.txt

[root@oldboy6666 tmp] #

11.3 linux系统的组成部分__文件权限

11.3.1 文件权限常见有哪些

  • r
  • w
  • x 执行
    • 无权限

11.3.2 文件权限代表的意思

  • r 4
  • w 2
  • x 1

- 0

11.3.3 文件和目录创建时候默认权限

11.3.3.1 文件:644

[root@oldboy6666 oldboy] # touch oldboy01.txt

[root@oldboy6666 oldboy] # ll

total 0

-rw-r--r-- 1 root root 0 Sep 17 07:53 oldboy01.txt

[root@oldboy6666 oldboy] #

 

11.3.3.2 目录:755

[root@oldboy6666 /] # mkdir oldboy

[root@oldboy6666 /] # ls

bin boot dev etc home lib lib64 media mnt oldboy opt proc root run sbin server srv sys tmp usr var

[root@oldboy6666 /] # ll -d oldboy

drwxr-xr-x 2 root root 6 Sep 17 07:52 oldboy

11.3.3.3 为什么目录默认权限是755,文件是644

创建一个新文件或者目录时,这个文件或者目录都具有一个默认的权限,比如目录755,文件644,这些默认权限是由umask(权限掩码)来控制的,一般umask默认值为022,其最终效果就是新创建的目录权限为755,文件权限为644。所以只要修改了用户的umask值,就可以控制默认权限。

11.3.3.4 为什么文件不受umask控制的时候默认权限666,目录777

文件默认是不会给执行权限的,就算是最高root用户也一样,所以是666

目录默认是会有执行全新年的,普通用户也一样,要不没办法切换目录,所以是777

11.4 linux系统的组成部分__用户类型

11.4.1 常见的用户类型

11.4.1.1 皇帝(root)

  • 计算机识别数为0
  • 权限:所有权限
  • 特点:拥有linux系统中的所有权限,可以登录

11.4.1.2 傀儡(虚拟用户)

  • 计算机识别数:1-999(centos7) 1-499(centos6)
  • 代表用户:nobody
  • 特点:管理一些进程使用的用户,不可以登陆,不存在用户家目录
  • 权限:管理进程使用
  • 注意: 首先不是ID为999以后就不是虚拟用户,只要满足没有家目录,不能登录则为一个虚拟用户

11.4.1.3 平民(其他用户)

  • 计算机识别数:1000+(centos7) 500+(centos6)
  • 特点:权限只能管理用户本身家目录里面的信息,权限比较小
  • 代表用户:oldboy
  • 权限:管理本身用户的家目录信息

 

11.4.2 查看用户

11.4.2.1 查看root用户的信息

[root@oldboy6666 tmp] # id root

uid=0(root) 01 gid=0(root) 02 groups=0(root) 03

[root@oldboy6666 tmp] #

  • 01:表示用户的名称和用户的编号信息
  • 02:表示用户组的名称和用户组的编号信息------主要用户组
  • 03:表示用户组的名称和用户组的编号信息-------次要用户组

11.5 linux系统的组成部分__时间

11.5.1 查看时间

11.5.1.1 date命令

[root@oldboy6666 oldboy] # date

Tue Sep 17 08:28:48 CST 2019

[root@oldboy6666 oldboy] #

11.5.2 时间常用的一些代表符号

  • y 代表年
  • Y 代表年(带世纪)
  • m 代表分钟
  • M 代表月
  • d 代表天
  • S 代表秒
  • W 代表一年的第几周
  • w 代表这周星期几
  • H 代表小时

11.5.3 将时间修改成人类可读的时间类型

[root@oldboy6666 oldboy] # date "+%Y-%m-%d %H:%M:%S"

2019-09-17 10:05:20

[root@oldboy6666 oldboy] #

11.5.4 修改时间

  • -s 修改时间

[root@oldboy6666 oldboy] # date -s "20190918 10:20:00"

Wed Sep 18 10:20:00 CST 2019

[root@oldboy6666 oldboy] # date

Wed Sep 18 10:20:02 CST 2019

[root@oldboy6666 oldboy] # date "+%Y-%m-%d %H:%M:%S"

2019-09-18 10:20:05

[root@oldboy6666 oldboy] #

11.5.5 将时间进行穿越式的修改

11.5.5.1 查看后20天的时间

[root@oldboy6666 ~] # date -d "+20 day" "+%Y-%m-%d"

2019-10-08

[root@oldboy6666 ~] #

11.5.5.2 查看前5天的时间

[root@oldboy6666 ~] # date -d "-5 day" "+%Y-%m-%d"

2019-09-13

[root@oldboy6666 ~] #

11.5.5.3 查看1970年01-01后的1234567890秒时间

[root@oldboy6666 tmp] # date -d "1970-01-01 +1234567890second" "+%F %T"

2009-02-13 23:31:30

[root@oldboy6666 tmp] #

11.5.6 mtime,atime,ctime的区别和什么时候使用哪种类型

11.5.6.1 atime

atime(access):代表的是访问的时间

[root@oldboy6666 ~] # stat /oldboy/oldboy01.txt

File: '/oldboy/oldboy01.txt'

Size: 0     Blocks: 0 IO Block: 4096 regular empty file

Device: 803h/2051d    Inode: 201983163 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2019-09-17 07:53:10.450938578 +0800

Modify: 2019-09-17 07:53:10.450938578 +0800

Change: 2019-09-17 07:53:10.450938578 +0800

Birth: -

[root@oldboy6666 ~] #

 

11.5.6.2 mtime

mtime(modify):文件修改的时间

[root@oldboy6666 ~] # echo aa >> /oldboy/oldboy01.txt

[root@oldboy6666 ~] # stat /oldboy/oldboy01.txt

File: '/oldboy/oldboy01.txt'

Size: 7     Blocks: 8 IO Block: 4096 regular file

Device: 803h/2051d    Inode: 201983568 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2019-09-18 10:50:55.721105498 +0800

Modify: 2019-09-18 10:51:19.508106850 +0800

Change: 2019-09-18 10:51:19.508106850 +0800

Birth: -

[root@oldboy6666 ~] #

11.5.6.3 ctime

ctime(change):文件改变时间(文件属性的修改)

[root@oldboy6666 ~] # chmod 777 /oldboy/oldboy01.txt

[root@oldboy6666 ~] # stat /oldboy/oldboy01.txt

File: '/oldboy/oldboy01.txt'

Size: 7     Blocks: 8 IO Block: 4096 regular file

Device: 803h/2051d    Inode: 201983568 Links: 1

Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2019-09-18 10:50:55.721105498 +0800

Modify: 2019-09-18 10:51:19.508106850 +0800

Change: 2019-09-18 10:53:55.717115731 +0800

Birth: -

[root@oldboy6666 ~] #

11.6 linux系统的组成部分__inode和block

扩展文件系统

  • 做磁盘的阵列
  • 创建分区
  • 格式化分区(会默认创建文件系统的)
  • 挂载分区

centos6和centos7文件系统是什么,他们有什么区别

  • centos6:ext3/ext4
  • centos7:xfs

区别:centos7的文件系统数据存储性能更高和格式化文件速度更快

11.6.1 inode的介绍

11.6.1.1 inode概念说明

索引节点

11.6.1.2 inode作用

存储文件属性和文件指针的信息

11.6.1.3 inode的创建

创建文件系统的时候

11.6.1.4 inode的查看

[root@oldboy6666 ~] # df -i

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/sda3 51539456 168078 51371378 1% /

devtmpfs 120529 388 120141 1% /dev

tmpfs 124468 1 124467 1% /dev/shm

tmpfs 124468 981 123487 1% /run

tmpfs 124468 16 124452 1% /sys/fs/cgroup

/dev/sda1 75800 346 75454 1% /boot

tmpfs 124468 7 124461 1% /run/user/42

tmpfs 124468 21 124447 1% /run/user/0

/dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64

[root@oldboy6666 ~] #

11.6.1.5 inode的特点

  • inode 里面存放的是文件属性和指针信息
  • 一个文件创建拥有-个inode
  • 2个inode相同的文件互为硬链接

11.6.2 block的介绍

11.6.2.1 block的概念说明

block:存储数据块

11.6.2.2 block作用

存储文件数据的信息

11.6.2.3 block的创建

创建文件系统的时候出现

11.6.2.4 block的特点

  • 存储文件的数据信息
  • 每个文件至少占用一个block
  • block的大小可以调整

    如果是大文件存储或者读取,希望block变大,这样可以减少磁盘I/O的损耗

如果是文件比较小的情况下,希望block减小,这样可以节约block,节省磁盘的 数据

11.6.2.5 block的查看

[root@oldboy6666 ~] # df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda3 103028584 5082648 97945936 5% /

devtmpfs 482116 0 482116 0% /dev

tmpfs 497872 0 497872 0% /dev/shm

tmpfs 497872 8824 489048 2% /run

tmpfs 497872 0 497872 0% /sys/fs/cgroup

/dev/sda1 201380 163736 37644 82% /boot

tmpfs 99576 8 99568 1% /run/user/42

tmpfs 99576 36 99540 1% /run/user/0

/dev/sr0 4480476 4480476 0 100% /run/media/root/CentOS 7 x86_64

[root@oldboy6666 ~] #

 

 

11.6.3 图示inodeblock

11.6.4 硬链接的介绍

inode号码一致的文件互为硬链接文件

11.6.4.1 创建语法

ln 源文件 硬链接的文件

将/oldboy/oldboy01.txt文件设置硬链接,名字为oldboy02.txt

[root@oldboy6666 oldboy] # ln oldboy01.txt oldboy02.txt

[root@oldboy6666 oldboy] # ll -i

total 8

201983568 -rwxrwxrwx 2 root root 7 Sep 18 2019 oldboy01.txt

201983568 -rwxrwxrwx 2 root root 7 Sep 18 2019 oldboy02.txt

[root@oldboy6666 oldboy] #

11.6.4.2 特点

  • 源文件删除,链接文件不会失效
  • 硬链接创建成功,不会占用inode和block
  • 硬链接对目录不能进行处理, 不能创建硬链接目录
  • 默认目录链接数为2,文件为1

11.6.4.3 作用

可以防止数据的误删除,但是不可以防止数据的变化

11.6.5 软链接的介绍

数据信息的快捷方式

11.6.5.1 创建语法

ln -s 源文件 创建的软链接

将/oldboy/oldboy01.txt文件设置软链接,名字为oldboy03.txt

[root@oldboy6666 oldboy] # ln -s oldboy01.txt oldboy03.txt

[root@oldboy6666 oldboy] # ll -i

total 8

201983568 -rwxrwxrwx 2 root root 7 Sep 18 2019 oldboy01.txt

201983568 -rwxrwxrwx 2 root root 7 Sep 18 2019 oldboy02.txt

201940459 lrwxrwxrwx 1 root root 12 Sep 17 11:34 oldboy03.txt -> oldboy01.txt

[root@oldboy6666 oldboy] #

11.6.5.2 特点

  • 源文件删除,链接文件会失效
  • 硬链接创建成功,会占用一个inode,block不会占用
  • 软链接对目录可以进行处理, 可以创建软链接目录

11.6.5.3 作用

可以方便研发人员调取数据

11.6.6 硬链接和cp命令的不同,什么时候使用硬链接,什么时候使用cp

  • 硬链接创建以后,由于inode号相同,导致硬链接指向的内容也是源文件指向的内容,源文件的内容进行修改,硬链接的文件内容也会进行修改;真乃删除源文件的时候,硬链接数-1,知道硬链接数为0,文件就会消失
  • cp创建复制文件的时候,由于inode号不同,所指向的内容也不同,cp只会保存开始复制以后之前的书记,后面的数据不会随着源文件的内容改变而出现改变

11.6.7 文件误删除的情况怎么处理(日志文件,备份文件还原上面没有办法执行)

  • 查看有没有硬链接文件
  • 重启服务,重新加载日志服务系统(systemctl restart rsyslog.service)

 

11.6.7 软硬链接图示

 

posted @ 2019-11-30 15:37  HXX-LYX  阅读(701)  评论(0编辑  收藏  举报