Linux期末复习笔记2

/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元数据包括:

  1. 文件大小(字节)

  2. 文件所有者(UID)和所属组(GID)

  3. 文件权限(rwx权限位)

  4. 时间戳

    • 访问时间(atime)

    • 修改时间(mtime)

    • 状态改变时间(ctime)

    • 创建时间(crtime,部分文件系统支持)

  5. 链接计数(有多少文件名指向这个inode)

  6. 文件数据块的位置(指向实际存储位置的指针)

  7. 文件类型(普通文件、目录、符号链接、设备文件等)

硬链接创建的文件和源文件共享同一个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    显示匹配及其行号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值