最全最易懂的文件属性信息
第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系统的组成部分__文件类型
-
常见的文件类型有哪些
-
普通文件(-)
- 文本文件
- 二进制文件(命令文件)
- 脚本文件
- 数据文件
- 目录文件(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不打包,剩余的打包
-
使用- -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 图示inode和block
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 软硬链接图示