2.1 类型与权限
-
ll
命令:- 第一列的含义:
- 第一个字符:文件类型。[d]目录,[-]文件,[l]链接文件,[s]socket网络连接文件,[p]管道文件,[b]存储设备,[c]串口设备(一次性读取设备,键鼠等)
- 之后九个字符,三个一组,共三组。第一组是拥有者权限,第二组是所在用户组的权限,第三组是其他人权限。
- 第二列是链接数;
- 第三列是文件拥有者;
- 第四列是文件所属用户组。
- 第一列的含义:
-
chgrp
,chown
,chmod
:分别对应修改文件或目录的所属用户组,拥有者,和文件权限。chown caucher data.bin
-
-R
参数可以递归设置目录下所有文件; -
chmod
的第一个参数为数字格式,按照rwx
的规则从0到7,比如chmod 777 data.bin
-
chown
可以同时修改所属用户和用户组,利用:
分开即可。
-
-
umask
可以设置文件和目录的默认权限,-S
文本显示。 - 文件与目录的权限:
- 文件:
r
表示可读,w
表示可修改(不包括删除),x
表示可执行。 - 目录:
r
表示可查看其中文件,w
表示可以【修改删除新建移动】目录中的文件,x
表示可以进入该目录。
- 文件:
2.2 FHS标准
2.2.1 /
根目录
该目录主要跟启动系统有关。这个目录所在的分区要越小越好,以保证尽可能低的出错概率。
-
bin
: 常用bash命令程序:cat
,chmod
等; -
boot
:linux内核文件vmlinuz
和其它系统启动配置程序; -
dev
:设备文件;-
dev/shm
:虚拟内存映射
-
-
etc
:几乎所有配置文件,包括密码文件,服务启动文件等。- 一般来说所有用户可读,但只有root可修改;
- 不要放置可执行文件在这里面。
- 必须有一个
etc/opt
存放第三方软件的配置。
-
home
: 各个用户的家目录。 -
lib
:启动时需要的系统函数库; -
lost+found
:ext系列文件格式的一个错误模块。 -
media
:可删除的挂载设备; -
mnt
:暂时挂载设备; -
opt
: 第三方软件的目录,主要指不在软件源中提供的软件;usr/local
是过去的该类软件的存放地。 -
proc
:实际上是一个虚拟文件系统,不占磁盘空间,内容都在内存里面。包括系统内核,进程信息,外接设备,网络状态等。 -
root
:root用户的家目录。 -
run
: 系统启动后各项信息,过去存于var/run
中。 -
sbin
: 用来设置系统环境的程序。 -
srv
: 网络服务的数据目录。 -
sys
:和proc
性质一样,但存放的是内核信息。 -
tmp
:临时文件目录。
2.2.2 /usr
软件目录 (UNIX Software Resource)
-
/usr/bin
:用户命令程序; -
/usr/include
:C/C++头文件目录; -
/usr/lib
:系统函数库; -
/usr/libexec
:一些不常用的脚本。 -
/usr/local
:非软件源提供的软件; -
/usr/sbin
:非必须系统命令程序; -
/usr/share
:共享只读文档文件。 -
/usr/src
: 内核源码。
2.2.3 /var
运行目录
包括缓存文件,日志文件,运行时产生的文件(lock file, run file等),数据库文件等。
-
/var/cache
:程序的缓存文件; -
/var/lib
:程序执行过程中需要的数据文件,比如数据库的数据文件。 -
/var/lock
:实际已经迁移到/run/lock
中,表示的是对设备上锁(某些设备某一时刻只能由一个进程占用)。 -
/var/log
:重要的日志文件。 -
/var/run
:实际已经迁移到/run
中,进程或服务启动后,pid就会放在这个目录下。 -
/var/spool
:等待进程使用的队列数据。
2.3 路径操作
基本命令:
-
pwd
:显示当前路径。参数-P
显示真实路径(非链接路径)。 -
mkdir
:创建目录。参数-p
可以递归创建一系列目录。 -
touch
:创建一个新文件,(以及修改文件属性,下面将)。 -
file
:查看文件属性 -
ls
:列出目录上的文件。- 参数
-R
会将子目录中内容全部输出; - 参数
-S
将以文件大小排序,-t
以时间排序,-r
将结果反向排序。 - 参数
-s
将输出文件和目录的实际占用大小。 - 参数
--full-time
输出完整时间格式。
- 参数
-
cp
:复制文件或目录- 参数
-i
询问是否覆盖; - 参数
-p
连同属性一起拷贝; - 参数
-d
,在复制链接文件时,只复制链接,否则会复制源文件。
- 参数
-
mv
:移动文件或目录,默认会覆盖。- 参数
-i
询问是否覆盖; - 可以放置多个参数,只有最后一个参数是目的地
- 参数
-
$PATH
:可执行文件的路径变量(环境变量)。每个用户的变量值还各有不同,一般会包含自己用户家目录中的bin
。
2.4 查看文件内容
-
less
:只读版的vim -
head
: 看文件的头几行,参数-n
决定看几行 -
tail
:看文件的尾几行,用法和head
一样。额外一个可选参数-f
可以持续显示文件中append进来的数据。 -
od
:查看二进制文件:-
od -t f4 data.bin
:输出浮点数(float)文件; -
od -t d4 data.bin
:输出整数(int)文件,还可以用o
和x
来进行8进制和16进制输出。
-
2.5 文件的时间属性
- 修改时间(mtime):修改文件内容的时间(
ls
默认显示); - 状态时间(ctime):修改文件属性的时间;
- 读取时间(atime):读取文件的时间。
-
touch
命令可修改文件的时间属性。
2.6 文件查找
-
which
:查找$PATH
内的脚本。 -
whereis
:搜索范围比which
略大,-l
参数列出搜索目录。 -
locate
:搜索范围更大;不需要输入完整名字;需使用updatedb
更新数据库。- 参数
-i
忽略大小写; - 参数
-r
可输入正则表达式。
- 参数
-
find
:可以按照文件时间,拥有者,文件名,文件权限,文件类型查找,-
-size +50k
:查找>50KB的文件; - find命令后面还可以对找到的文件进行额外的Action,例如
find . -size +1M -exec file {}\;
,其中{}
代表找到的文件。
-
2.7 文件系统
2.7.1 ext2文件系统
每个文件有一个inode
(存文件属性)和若干data block(存具体数据)构成。
- 整个文件系统会将磁盘划分成若干block group,每个group中有一个super block,存放该group中关于inode和data block的统计信息,可以由命令
dumpe2fs /dev/sda
查看;- 还有block bitmap和inode bitmap用来映射对照block和inode的使用情况,以便分配。
2.7.2 xfs文件系统
由于ex[n]系列预先初始化好各个部分,使用时直接取用,因此格式化速度极慢。因此在大磁盘容量时,xfs文件系统是首选。
- 日志式文件系统:对磁盘做的修改首先写入log section以备恢复。
- 动态空间配置:不初始化具体的inode, data blocks等,即用即配,但仍然规划为若干blocks。
- realtime section:写文件时首先在这个位置写,然后再转入data section。
-
xfs_info
:查看文件系统的具体配置。
每个文件系统可以挂载在目录树的某个入口点上,每个分区一般只有一个文件系统。总的来说,一台机器可能有多个分区,不同的文件系统,其访问方式,统一交给linux内核的VFS模块来协调管理。
2.7.3 文件系统管理
-
df -hT
:显示各个文件系统状态,-T
显示文件系统类型,-i
显示inode使用数量。 -
du -h
:递归显示每个目录的大小,-a
可以显示所有文件大小,-s
显示汇总大小。 -
lsblk
:显示所有磁盘和分区性质,参数-f
显示uuid; -
parted /dev/sda print
显示分区类型。 -
/etc/fstab
记录了文件系统的开机自动挂载情况。
2.7.4 硬链接与软链接
- 硬链接:
ln src dest
dest和src共享一个inode,所多出来的就是dest的目录中加了一个条目【dest => src的inode】而已。新文件也是个普通文件,但是链接数会+1.- 硬链接不支持跨文件系统,不支持链接目录。
- 软链接:
ln -s src dest
实际上就是快捷方式,生成一个新文件,类型为l
,其中的内容就是src的名字- 建立链接请使用绝对路径!不要使用相对路径,否则会在使用时报错“Too many levels of symbolic links”。
- 文件、目录均可使用该指令,一视同仁。
- 新建一个目录时,由于
.
和..
的原因,新目录链接数为2,新目录的上级目录链接数+1。
2.8 磁盘管理
简略说,需要分区,格式化(创建文件系统),校验,挂载四步。
注意的点是:
- 格式化时,xfs文件系统的
-agcount
参数,即几个存储组,可以设置为逻辑线程个数以增强读写效率。 - swap交换空间也是类似的,只不顾格式化命令不同,也无需校验挂载。
- 镜像文件
.iso
可以直接挂载在某个目录上。 -
dd
命令功能很强大,不仅可以用于文件和目录的备份,还可以将整个设备备份成一个文件(比如镜像文件.iso
),甚至可以将镜像文件刻录到设备上。 -
cpio
命令则是一个更灵活的备份工具,可以自选文件目录进行备份,不过需要配合find
命令和管道一起使用。
附录(冷知识)
-
;
可以在多个命令之间,表示多条命令依次执行 -
last
:查看用户最近登录信息 -
/etc/passwd
: 所有用户信息 -
/etc/shadow
: 所有用户密码信息(加密过) -
/etc/group
: 所有用户组信息 - 文件名开头为
.
的代表为隐藏文件,可以被ls -a
找出来。
网友评论