文件相关的属性与命令
一、文件的属性
文件大小、时间、类型、权限、属主
1列 2列 3列 4列 5列 6列 7列 8列 9列 10列
(1)inode索引节点编号:文件的唯一标识
(2)文件类型及权限。该列一共11个字符,其中第一个字符为文件类型,随后9个字符为文件对应的权限,最后一个字符“.”和selinux有关的一个标识
(3)硬连接数
(4)属主,文件的拥有者,用户
(5)属组,文件属于的组,用户组
(6)文件的大小
(7)月
(8)日
(9)时间
(10)文件名
二、文件类型
1、“-”代表普通文件
普通文件又分:a、纯文本文件:字符、数字等内容
b、数据文件:存放命令收集的信息
c、二进制文件:可执行的命令
2、“d”代表目录
3、“l”代表符号链接(软链接)文件。本质是一个快捷方式
创建软链接的方法:ln -s 源文件 软连接;(如:ln -s a.txt a_softlink)
删除软链接:rm
4、字符(character)/块(block)设备文件
以“c”开头的是字符设备,以“b”开头的是块设备(硬盘、光驱)
5、以“s”开头的,套接口(socket)文件
三、与文件相关的命令
1、file 文件:查看文件类型
2、which:查命令的全路径
注意:变量:$PATH
问题:为什么我们不管在什么路径下面输入命令都可以找到呢?用which命令一找,发现命令的路径在其他路径下面,就是因为$PTATH变量
当我们输入命令的时候,系统就会自动到$PATH变量的路径下面去找这个命令
$PATH的路径:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
3、whereis:显示命令、源码、及其相关文件全路径
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件
参数:-b:查二级制命令
例如:whereis -b cp
4、locate:快速定位文件路径
该命令查找文件路径,是从数据库(/var/lib/mlocate/mlocate.db)里面来查找,使用之前需要用命令updatedb更新该数据库
例如:locate cp
5、find:查找目录下的文件
查找原理:磁盘遍历,速度慢
格式:find 查找路径 查找条件 处理动作
find 哪个路径 -name 文件全名;(find ~ -name "a.txt":从当前用户的家目录开始查找)
名字的模糊查找:find / -name "*txt"
(1)-name,按文件名称查找:find ~ -name "a.txt";(注意:-iname:是区分文件名的大小写)
(2)-type,按文件名称和类型查找:find / -type f -name "a.txt"
(3)-o,按文件名称或者文件类型查找:find / -type f -o -name "a.txt"
(4)-mtime,按修改时间查找:find / -type f -mtime +3 -name "a.txt";+3:天之前,-3:最近3天,3:3天
(5)-size:按文件大小来查找:-size "3k"
(6)-exec,对查找的结果在处理:find / -type f -name "a.txt" -exec ls -l {} \;
6、xargs:分组或者从标准输入执行命令,以空格来分组的(只能从标准输入那里取数据)
默认是对空格来分组,如果没有空格也需要分组可以用参数-d
格式:xargs -n 3<a.txt
参数:-n:几个东西一个组
-d:指定分隔符,不指定默认是空格。如:xargs -d "." -n 2 <a.txt
-i:把前面查找的结果放到大括号里面
例子:find / -type f -name "a.txt"|xargs -i{} cp {} /opt;把前面找到的文件批量复制到/opt目录下
find / -type f -name "a.txt" -exec cp {} /opt;
7、打包压缩命令
(1)tar
格式:tar -zcvf 包名 文件;(参数:zcvf压缩)
z:打包,c:创建,v:输出打包过程,f:文件
查看打包过程:tar -tf 包名
8、解压命令
(1)tar
参数:-h:打包软链接文件指向真实源文件。即就是打包软链接文件时把对应的源文件也一块打包
格式:tar -zxvf 包名;解压到当前目录下
tar -zxvf 包名 -C 指定目录;解压到指定的目录下
9、stat 查看文件属性:stat a.txt
参数:-c:获取文件属性的一部分。如果:stat -c %A a.txt;读取文件权限
10、df 查看文件系统
参数:-i 查看inode信息
-h 以人类可读的形式查看block信息
四、文件属性
1、用户
Linux是多用户多任务的操作系统
Linux里面所有的文件和进程都要有用户对应
(1)用户的分类:
a、超级管理员root。它的UID为0,换句话说UID为0的都有超级管理员的权限
命令:id 用户;查询用户的信息
whoami;查看当前用户是谁
b、虚拟用户:实际存在的用户,但是又不允许登陆。(UID的范围是1-499)
作用:能够满足文件或进程运行属主的要求,但是又不会带来管理的风险
c、普通用户:实际存在,又允许登陆。由管理创建,管理系统的
权限仅限于家目录,在一些系统级目录里可以读不可写,不能进入/root目录
(2)和用户有关的命令
1)id 用户;查询用户信息
2)whoami;查询当前用户是谁
3)创建用户:useradd 用户名;
2、用户组
Linux里面每一个用户都必须有一个用户组
默认情况下创建用户,它会自动创建一个和用户名相同的用户组以及相同的GID
(1)用户和用户组的对应关系
用户和用户组之间对应关系可以是1对1 ,1对多,多对1,多对多
(2)和用户组有关的命令
1)创建用户组:groupadd 组名;
3、文件权限
例子:rwx r-x r-x (9个字符组成的字符串,3个一组)
用户权限 用户组权限 其他权限(其他用户和其他用户组)
r:read 可读取(可用4代表)
w:write 可写(可用2代表)
x:execute 可执行(可用1代表)
-:没有权限(可用0代表)
4、文件时间
分类:a、修改时间:modify(文件内容被修改的时间)
b、访问时间:access(文件被读取过的时间)
c、变化时间:change(文件属性发生变化的时间)
ls 查看的时间是文件的修改时间,如果要查看文件的这三种时间可以用:stat a.txt
命令:查看文件属性 stat a.txt
参数:-c:获取文件属性的一部分。如果:stat -c %A a.txt;读取文件权限
5、文件的索引节点(Index Node)
索引节点是文件在系统中的唯一标识,我们找文件都是通过文件索引节点来找到的。
索引节点是硬盘上的一块存储空间,大小为:256B或512B
索引节点存放的是数据是文件的属性(大小、时间、用户、用户组、权限等)都在索引节点里面,但唯独不包括文件名。文件名在上级目录的block里
索引节点怎么来的?一个硬盘要想使用必须先分区,然后格式化(创建文件系统),格式化创建文件系统的时候就会生成inode和block
inode作用是用来存储文件的属性信息,同时存放指向文件实体(block)的指针(类似软链接)。block作用是用来存放文件内容的
读取文件的过程:先看到的是文件名(上一级目录的block中)——>inode(存放文件属性和指向文件实体的指针)——>block(存放文件实体内容)
例如:cat /etc/a.txt :先找"/"—>然后找根目录的inode—>然后找根目录的block(etc文件名存放于此)—>etc的inode—>etc的block(a.txt存放于此)—>a.txt的inode—>a.txt的block
(1)inode的特点:
1)ext3/ext4文件系统(CentOS5和6默认的文件系统)下,一个非空文件至少要占用一个inode(有且只有一个)和一个block(可以有多个)
2)inode节点号相同的文件,互为硬链接文件。可以认为是一个文件的不同入口
3)inode在某一个文件系统(分区)中是唯一的
(2)block(磁盘块)特点
1)磁盘读取数据是按block为单位读取的
2)每读取一个block就会消耗一次磁盘I/O
3)若文件比较大,一个文件可能占用多个block
4)若文件比较小,一个block剩余空间会被浪费,无论内容有多小
6、第二列文件权限后面的点“.”是标识selinux的符号
selinux是安全规则,目的是让linux系统更加安全。该规则太严格一般企业都是关闭的,要达到安全目的可以用防火墙等其他手段
命令:getenforce:查看
setenforce 1/0:临时关闭
永久关闭:在配置文件:/etc/selinux/config中修改SELENIUX的值
防火墙的知识:linux里面防火墙C6:iptables,C7:firewalld
C7:
查看防火墙的状态:systemctl status firewalld.service
启动防火墙: systemctl start firewalld.service
防火墙开机自启动:systemctl enable firewalld.service
不是开机自启动:systemctl disable firewalld.service
C6:
查看防火墙状态:service iptables status
启动防火墙:service iptables start/restart;或者 /etc/init.d/iptables start
关闭防火墙:service iptables stop;
开机自启动防火墙:chkconfig iptables on
开机不自启动防火墙:chkconfig iptables off
7、硬链接
(1)什么是硬链接?
具有相同inode节点号的文件互为硬链接。
其实我们可以这样理解一个文件在系统中的存储分为3个部分:文件名、inode、文件内容。如何找到一个文件先找到文件名
然后根据文件名找到文件的索引节点,其中inode中存储了文件的属性信息,然后根据inode中的信息找到存储在block中的
文件内容。所以硬链接就是指向同一个文件的inode的不同的文件名
注意:在linux系统中不支持人工创建目录的硬链接
(2)新建硬链接
格式:ln 要硬链接的文件 硬链接名;
例子: ln ./a.txt /home/a_hard_link ;
(3)硬链接的作用:1)备份数据
(4)静态文件删除原理:
1)静态文件:没有进程或程序正在访问的文件
2)删除原理:该文件的所有的硬链接数为0,即所有的硬链接都被删除,包括自身。即文件就被删除
动态文件:有进程或程序访问的文件
删除条件:1)硬链接数为0
2)所有进程调用都要停止或者取消
8、软链接
本质是一个快捷方式,指向源文件实体,本身和源文件是不同的文件。
其实可以理解为:软链接,就是创建一个快捷方式,指向上面的文件名,然后通过文件名找文件的inode然后找文件内容,
所以删除源文件的文件名软链接也无法访问该文件。软链接也是一个没有内容block的文件
1)创建软连接
ln -s a.txt a_soft_link;
特点:a、删除源文件,那么软链接也无法访问改文件
b、目录也可以创建软链接
c、想从一个目录去访问另一个目录的时候可以用软链接