文件系统和目录结构
cat /etc/centos-release 打印centos的系统版本
文件系统结构
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
LINUX的文件类型
绝对和相对路径
工作中尽量使用相对路径
pwd 打印当前工作目录
cd 切换目录
cd - 回到上次的目录
df 查看磁盘各分区情况
df -i 查看各分区节点情况
ls 常用选项
ls -a 包含隐藏文件
ls -l 显示额外信息
ls -R 目录递归
ls -ld 显示目录本身信息
stat xx 显示文件状态信息
atime 读时间 (读取间隔时间短暂,atime不变)
mtime 文件内容变更时间
ctime 文件状态更改时间(例如文件的所有者,权限)
echo '- - - ' > /sys/class/scsi_host/host2/scan 扫描硬盘
echo '- - - ' > /sys/class/scsi_host/host0/scan 扫描硬盘
touch 新建普通文件 如果文件存在 则刷新文件时间
根据后缀显示文件颜色的配置文件 /etc/DIR_COLORS
dd if=/dev/zero of=/data/zerofile bs=1 count=1
从/dev/zero里面读数据 写入到/data/zerofile里面
bs=1 一块一个字节 count=1 写一次
basename /etc/profile.d/env.sh =env.sh
dirname /etc/profile.d/env.sh = /etc/profile.d
mknod 创建设备文件
mknod /data/disk b 8 0
/data/disk是名称 b是类型 8是类型编号 0是第几号
mkfifo xx 创建管道文件
nc -UL xx 创建socket文件
通配符
[[:lower:]] 表示一个小写字母
ls .* -d 加-d是指只查看当前目录的隐藏文件
查看-a这种文件 ./-a
[a-e] = a A b B c C d D e
echo {0..5} =1,2,3,4,5
星号在通配符和正则表达式中有其不一样的地方,在通配符中可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。
注意通配符里的星号是不包括“点”的
1 ls /var/l[0-9][[:lower:]]
2 ls /etc/[0-9][^0-9]
3 ls /etc/[^a-Z][[:lower:]]*
4 ls /etc/rc/[0-6]*
5 ls /etc/.conf
6 ls /etc/[mnrp].conf
7 ls /root/.* -d
8 ls /etc/*/ -d
小技巧 只显示目录 记得加/
CP
cp -a 备份很常用
cp -d 只复制软连接文件本身
cp -v 显示拷贝的过程
echo {a..z} a,b,c,d,e,f,g...z
echo f{1,2,3}.{log,txt}
这种很常用
f1.log f1.txt f2.log f2.txt f3.log f3.txt
1 cp -av /etc/ /data/backup
data +%F
(等价于反引号date +%F反引号)
cp -u 只复制src比dest更新的文件
cp xx xx --backup=numbered 对文件备份多次的设置编号
mv 移动
rm 删除
工作中一般用mv 代替 rm
目录相关命令
1 mkdir -p testdir/dir1/{x,y}/{a,b}
2mkdir -p testdir/dir2/{x/{a,b},y}
3 mkdir -p testdir/{dir3,dir4,dir5/{dir6,dir7}}
索引节点
df -i 查看磁盘各分区节点的利用率
每个分区都有自己的节点编号
节点表存放文件的元数据
每创建一个文件都消耗一个节点编号
节点编号用光,即使有空间,也不能创建文件
目录也是文件,根据目录节点表找到对应的数据块
目录数据块里存放文件名和文件对应的inode号码
根据文件inode号码找到文件节点表,进而找到文件的数据块(文件的真正内容)
删除一个文件,先把目录数据块里的文件名和对应的inode号码删除,然后删除文件的节点表,但是文件的数据块没有被立即清空,只是被标识为空闲状态,直到有数据使用这块空间
cp /etc/fstab / /data/fstab.bak 底层做了什么?
首先在/data 分区分配一个节点编号 然后把文件的
元数据(权限,大小等)写入节点表,找一块
磁盘空间存放文件内容,并且把节点表里的指针指向这块磁盘空间
在/data目录里增加一条文件名和节点编号的记录
然后把此记录和目录关联起来,最终完成创建
INODE表结构
ext系列的文件系统工作过程
硬链接
软连接/符号链接
假设 数据库下有个大文件 想要删除它,但是由于
这个文件太大占用太多的数据块,一旦删除,需要
把每个数据块标记为空闲状态,而此时服务器压力过大可能造成死机。所以解决办法是对此文件创建一个硬链接,即使删除数据库文件,因为还有另外的文件使用数据块,所以,数据块不会删除。不会造成服务器压力过大,同时也删除了数据库文件。
新磁盘使用
vim编辑器
注意:vim编辑文件时,有时误操作会出现生成.swp文件,需要把该隐藏文件删除后,才可正常编辑
模式转换
关闭文件
扩展命令
命令模式
翻屏
字符编辑
删除
复制
粘贴
扩展模式地址定界
查找
撤销更改
剪贴板寄存器
标记和宏
扩展模式 查找并替换
文件分割
配置文件
格式
标准输入和输出
输出和错误重定向
输出和错误重定向到文件
tr转换
tr -dc ‘xxx’ 删除xxx的补集
重定向输入
多行重定向输入和mail
管道
tee
1
/etc/skel 新建用户家目录的默认模板目录
用户
组
安全上下文
组的类别
用户和组的配置文件
密码期限
group格式
gshadow格式:
useraddd
与useradd相关的文件
用户属性
删除用户
查看相关用户id
su
passwd
chage
groupadd
groups username 查看用户属于哪些组
groupmems -l -g xxx 查看xxx组里的成员
修改删除组
gpasswd
查看更改组成员
chown
文件权限
chmod
新建目录和文件的默认权限
对于目录来说,读权限是指能够看到目录里的文件名
写权限是指 能够在目录里面创建和删除文件
执行权限是指能够进入目录(基本权限)
1 无法进入目录
2 无法查看目录有哪些文件
3 不可以
4 不可以