/etc/passwd 用户信息文件:每行储存一个用户的账号信息
用户名:加密密码:用户ID:用户组ID:用户信息:用户主目录:登录shell
超级用户root的UID是0
系统用户的UID在1000以内
普通用户的UID从1000往上编号
/etc/shadow 口令文件:每一行储存一个用户的登录密码信息,加密
用户名:加密口令:上次更新时间:允许更改时间:要求更改时间:取消口令之前的警告时间:取消和停用之间的时间:账户口令的天数:账户终止时间:特殊标志
只有root用户能读取这个文件
/etc/group 组信息文件:每一行记录这系统中的用户组信息
组名:密码字段:用户组ID:用户名列表
默认情况下,创建用户的时候,系统会自动创建一个同名的组,作为该用户的主组。
用户类命令
useradd [选项] 用户名
作用:新增用户
-u uid 指定新用户的UID。新用户默认UID为当前最高UID值+1
-d dirName 指定用户的主目录。默认会在/home目录下新建一个与用户名相同的主目录
-s shellName 指定用户登录时使用的shell。默认为/bin/sh
-g groupName 指定用户所属组名。创建用户时默认创建一个与用户名同名的组
-G groupList 一个用户可以属于一个组,也可以属于多个组。用户创建时属于的组为主组
其他为附属组
passwd [用户名]
作用:修改密码
eg.passwd user1
echo XXX | passwd --stdin root 无交互设置密码
--stdin:从标准输入中读入新的密码
usermod [选项] 用户名
作用:修改用户属性
与useradd一致
userdel [-r] 用户名
-r 删除与用户有关的文件和目录,如用户主目录和日志,邮箱等
groupadd [-g] 组名
作用:增加用户组
-g 设置GID
groupdel 组名
作用:删除用户组
文件属性类命令
chmod [-R] 权限模式 路径
-R:递归修改

u 表示该文件的拥有者
g 表示同组用户
o 表示其他以外的人
a 表示这三者皆是
+ 表示增加权限
- 表示取消权限
= 表示唯一设定权限
r 表示可读取
w 表示可写入
x 表示可执行
头三个字母表示文件拥有者对这个文件的权限
中三个字母表示拥有者同组用户对这个文件的权限
后三个字母表示其他用户的权限
chown [-R] 用户名 [;组别] 路径
作用:改变文件或目录的拥有者或组别
eg. chown root:root 1.txt
chgrp [-R] 组名 路径
作用:改变指定目录或文件的所属组
ln [-s] 源路径 目标路径
作用:创建文件的快捷方式
硬链接(hard link)
给文件一个副本(别名),同时建立两者之间的连接关系,修改其中一个,与其连接的文件同时被修改,如果删除其中一个,其余的文件不受影响。磁盘上只有一份数据。硬链接是存在同一个文件系统中
创建方法:ln oldfile newfile / link oldfile newfile
软链接(symbolic link) 软链接的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置。它只是一个快捷方式,删除了源文件,这个连接文件就没用了。软链接可以跨越不同的文件系统
创建方法:ln -s oldfile newfile

inode编号:文件的唯一标识(通过ls -i filename 查看一个文件的inode编号)
inode包含:
-
文件的元数据
-
指向文件内容(data block)的指针
inode不包含:
-
文件名(文件名存储在目录中)
-
文件内容(内容存储在数据块中)
inode元数据包括:
-
文件大小(字节)
-
文件所有者(UID)和所属组(GID)
-
文件权限(rwx权限位)
-
时间戳:
-
访问时间(atime)
-
修改时间(mtime)
-
状态改变时间(ctime)
-
创建时间(crtime,部分文件系统支持)
-
-
链接计数(有多少文件名指向这个inode)
-
文件数据块的位置(指向实际存储位置的指针)
-
文件类型(普通文件、目录、符号链接、设备文件等)
硬链接创建的文件和源文件共享同一个inode,软链接创建的文件新建了一个inode其指向的data block包含了指向源文件的指针
##实际应用:inode耗尽的问题
什么情况下inode会耗尽?
即使磁盘还有空间,也可能因为inode尽而无法创建新文件:
# 查看磁盘inode使用情况
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 6553600 6553600 0 100% / # inode已用尽!
/dev/sda2 1310720 10000 1300720 1% /home# 即使磁盘还有空间
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 20G 30G 40% / # 还有30G空间,但inode没了!
inode耗尽的原因和解决
# 原因:大量小文件(比如邮件服务器、Docker容器、日志文件)
# 查找inode使用最多的目录
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -rn | head -10# 清理小文件
# 1. 清理临时文件
find /tmp -type f -atime +7 -delete# 2. 清理Docker残留
docker system prune -a# 3. 清理旧的内核文件
sudo apt autoremove --purge # Ubuntu
sudo yum autoremove # RHEL/CentOS# 4. 如果是ext4文件系统,可以增加inode数量(格式化时)
mkfs.ext4 -N 10000000 /dev/sdb1 # 创建1千万个inode
文件压缩类命令
tar [选项] 压缩文件名 路径
作用:备份文件
-c 创建备份
-v 显示指令执行过程
-z 通过gzip指令处理备份文件
-x 从备份中还原文件
eg. tar -cvzf 1.tar.gz 1.txt 打包和压缩
tar -xvzf 1.tar.gz 1.txt 还原和解压缩
-z是压缩和解压缩文件的必要选项
tar -cvf 只是打包了文件,并没有压缩
tar -xvf 也只是还原了文件,没有解压
gzip [选项] 文件...
作用:用于压缩和解压缩文件
-d 将压缩文件解压缩
-r 递归查找目录中的文件,解压缩或者压缩文件
-v 显示指令压缩过程
unzip [选项] 路径
作用:用于解压缩采用Winzip工具压缩的文件
-x 解压缩文件
-d 将文件解压缩到指定目录下
# zip -r myfolder.zip myfolder (压缩)
# unzip -x a.txt.zip (解压缩)
# unzip -d /tmp a.txt.zip
文件处理类命令
awk [选项] ’脚本命令‘ 文件名
-Fs 指定分隔符s,s可以是字符串或正则表达式
-v 赋值一个用户自定义变量
eg. # awk -F: ‘{print $1,$5}’ /etc/passwd
# cat /etc/passwd | awk -va=1 -F: ‘{print $1,$4+a}’
sed [选项] 处理文件格式
作用:自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等,可能改变原文件
-s 匹配替换
-i 指定行号插入
-a 指定行号之后插入
-d 删除
-c 整行替换
eg.
指定行号之后插入
# sed ‘1a Hello Unix’ test.txt
# sed ‘2a Hello Unix’ test.txt
整行替换
# sed ‘2c Hello Unix’ test.txt
匹配替换
# sed ‘s/l/L/’ test.txt #只匹配每行第一个
# sed ‘s/l/L/g’ test.txt #全局替换
修改原文件
sed -i ‘s/l/L/’ test.txt
cut [选项] 路径
作用:从指定文件中过滤或提取特定内容,并显示在当前屏幕上
-d,delimiter=DELIM 指定分隔符
-c,--characters=LIST 指定提取内容的字符串个数
-f,--fileds=LIST 和-d一起使用,指定提取那个区域
eg.
·自定义分隔符,指定显示哪个区域
# cut -d: -f 1,3,5 /etc/passwd (以:为分割)
# cut -d: -f 1-5 /etc/passwd
·以字符为单位进行分割
# cut -c 2-5 /etc/passwd
# cut -c 2,5,7 /etc/passwd
tr [-d] 字符串1 字符串2
作用:用于替换或删除文件中的字符串
-d 删除字符串一中所有输入字符
-s 删除所有重复出现的字符序列,只保留一个
eg.
# cat /etc/passwd | tr ‘a-z’ ‘A-Z’
# tr ‘a-z’ ‘A-Z’ < /etc/passwd
# tr -d ‘a-c’ < test.txt
find [起始目录] [查找条件] [操作]
作用:查找文件或者目录
-atime n 检查在过去几天被读取过的文件
-amin n 检查在过去几分钟被读取过的文件
-ctime n 检查在过去几天被读取过的文件
-type c 只检查文件类型是c的文件
-perm p 只键检查文件权限是p的文件
-name n 只检查文件名为n的文件
-exec 对符合条件的文件执行所指定的linux文件。{}表示命令所找到的文件集 合,命令末尾必须以’\’结束
-print 在标准输出设备上显示查找到的文件名
eg.
# find . -name “*.conf”
# find / -perm 765 -name “*.txt”
# find /etc -type f -exec ls -l ‘{}’ \;
查找普通格式的文件
执行命令
ls -l '{}'; 是在找到每一个文件后要执行的命令。
{}会被替换为find命令找到的每个文件的路径,并通过ls -l命令来列出文件的详细信息
'{}'最好加' ',这样能处理特殊字符和空格,像:
"my file.txt"
如果不用‘ ’,假如-exec要执行的命令是echo,则有可能被误识别为echo my file.txt
\;表示在-exec选项中使用分号,而不是让其作为命令分隔符,表示逐次执行
\+表示批量执行,将前面find到的结果一起执行
grep [选项] pattern文件,,,
作用:查找文件里符合条件的字符串
-i 忽略大小写的区别
-v 显示不包含匹配文本的行
-n 显示匹配及其行号

2966

被折叠的 条评论
为什么被折叠?



