前言
这篇为Linux系统管理常用的知识点1-5章汇总
第一章 基本命令
1.1 cd 切换目录
cd … | 切换到上一层目录 |
---|---|
cd / | 切换至系统根目录 |
cd ~ | 切换至用户主目录 |
cd - | 切换至上一次所在目录 |
1.2 绝对路径/相对路径
绝对路径:以正斜杠/为起点的路径
相对路径:以当前目录为起点的路径
打个比喻,一个外国人在合肥南站向你问路,一家餐厅怎么走
绝对路径:首先做飞机来到中国,在合肥南站,出地铁路口左转
相对路径:前面路口左转
两种说法都正确,但是这位外国人刚好在合肥南站,用绝对路径过于复杂;但是如果这位外国人不在合肥南站,相对路径不能保证他能找到
1.3 pwd 打印当前目录
-P 参数 打印当前的物理路径,不带有任何的符号链接
1.4 touch 创建文件
touch两个功能:
1.创建新文件
2.刷新文件的时间
1.5 mkdir 创建目录
-p 递归创建多级目录
注意:默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。 所以在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 mkdir命令还可以同时创建多个目录
[root@localhost test]# mkdir 11 22
[root@localhost test]# ls
11 22
[root@localhost test]# mkdir 11
mkdir: 无法创建目录 “11”: 文件已存在
1.6 rm 删除
rm -rf 文件名
递归删除,并且不显示警告信息
1.7 cp 复制/改名
cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中
-f | 若目标文件已存在,则会直接覆盖原文件 |
---|---|
-i | 若目标文件已存在,则会询问是否覆盖 |
-p | 保留源文件或目录的所有属性 |
-r | 递归复制文件和目录,复制目录是必须使用 |
-a | 与p类似,但更强大,能保留软链接属性 |
[root@test1 ~]# cp -r /opt/ /data/111
#复制并改名
1.8 mv 移动/改名
-i | 若存在同名文件,则向用户询问是否覆盖 |
---|---|
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
[root@test1 ~]# mv /data/111 /opt/222
#移动并改名
1.9 ls 打印目录
ls -alh 打印目录下所有文件包括隐藏文件,以人性化、长格式显示
ls -ltr 长格式、修改时间由新到旧打印
ls 只能统计文件的大小,目录只统计目录本身的大小而不统计目录里子目录或文件的总大小
1.10 链接
ln -s 源文件或目录 链接文件或目录位置 软链接
ln 源文件或目录 链接文件或目录位置 硬链接
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode | 相同 | 不相同 |
连接数 | 创建新的硬链接,链接数会增加,删除链接数,链接数会减少 | 删除新建不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问链接文件 |
文件类型 | 和源文件相同 | 链接文件和源文件无关 |
文件大小 | 和源文件相同 | 源文件的路径的长度 |
1.11 du 查看磁盘占用
统计文件和目录占用的空间
面试题:如何查找占用过高的大文件
[root@test1 ~]# du --max-depth=1 /
169280 /boot
24 /data
0 /dev
du: 无法访问'/proc/2493/task/2493/fd/4': 没有那个文件或目录
du: 无法访问'/proc/2493/task/2493/fdinfo/4': 没有那个文件或目录
du: 无法访问'/proc/2493/fd/3': 没有那个文件或目录
du: 无法访问'/proc/2493/fdinfo/3': 没有那个文件或目录
0 /proc
9156 /run
24376 /etc
64 /root
168468 /var
1512932 /usr
#从根目录开始一层一层查找占用过高的目录,直至找到这个文件
#如果rm大文件,发现没有释放空间,是因为文件在被进程使用,使用echo " ">大文件,覆盖;
#或者lsof | grep delete,再kill进程
1.12 find 查找文件
find 查找目录 条件表达式
找到abc开头的文件并删除
[root@test1 ~]# find ./ -name "abc*" -a -type f -delete
[root@test1 ~]# find ./ -name "abc*" -a -type f -exec rm -rf { } \;
[root@test1 ~]# find ./ -name "abc*" -a -type f |xargs rm -rf
–exec参数后面跟的是Linux命令,以分号“;”为结束标志,由于系统中的分号有不同的意义,因此需要\转义{}代表前面find找出来的文件名
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具
第二章 目录和文件管理
2.1 cat查看文件
cat -n 显示行号
2.2 more/less查看文件
more命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字
less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览
2.3 head 查看文件
默认查看开头10行内容
head -5 查看前5行
2.4 tail 查看文件
默认查看末尾10行内容
tail -5 查看最后5行
tail -f 实时跟踪(tailf)
2.5 grep 过滤
^表示以...开头,$表示以...结尾,^$表示空行
-i 不区分大小写
-v 反向
-c 匹配到的行数
-A 打印以文本结尾的NUM 行
-B 打印以文本起始的NUM 行
-C 打印输出文本NUM 行
grep -v "^$" 不显示空行
2.6 wc 统计
-w | 统计字数,或–words;只显示字数。一个字被定义为空白、跳格或者换行字符分割的字符串 |
---|---|
-c | 统计字节数,或者–bytes或–chars 只显示Bytes数 |
-l | 统计行数,或–lines;只显示列数 |
2.7 tar 归档
制作归档文件、释放归档文件
tar [选项] 归档文件名 原文件或目录
tar [选项] 归档文件名 [-C 目标目录]
参数:
-c 创建.tar格式的包文件,一般都带
-x 解开.tar格式的包文件
-C 解压时指定释放的目标文件夹
-f 表示使用归档文件,使用tar一定要加
-p 打包时保留文件及目录的权限
-P 打包时保留文件及目录的绝对路径
-t 不解压的情况下,列表查看包内的文件
-v 输出详细信息,制作tar包或解开tar包的时候显示过程
-j 调用bzip2程序进行压缩或解压
-z 调用gzip程序进行压缩或解压
示例:f要放最后
tar -zcvf jishiben.tar.gz 1.txt 2.txt 保留原文件
tar -zxvf jishiben.tar.gz 默认当前目录
tar -zxvf jishiben.tar.gz -C /mnt
2.8 vim编辑器
1.三种模式:命令模式、输入模式、末行模式
2.vim 选项 文件名
3.!vim 打开上一次打开的文件
4.vim +数字 文件 跳到你想去的行数
5.+/字符串 找到匹配字符串的行
6.i、o、a进入插入模式
7.esc回到命令模式
8.复制 yy
9.粘贴 p
10.撤销u
11.定位G gg
12.查找 /
13.替换 范围s/原内容/新内容/g
第三章 安装及管理程序
3.1 rpm
rpm安装掌握这几个即可,后期基本不用
rpm -ivh 软件包 安装软件
rpm -e 软件包 删除软件
rpm -qi 软件包 查看软件包信息
3.2 yum
yum位置:/etc/yum.repos.d/
1.本地源 baseurl=file://…
2.在线源 baseurl=http://… https://…
3.ftp源 baseurl=ftp://…
[name]
name=
baseurl=file://....
enabled=1 打开仓库源 0 关闭
gpgcheck=0
#gpgkey=......
yum install -y 安装软件
yum remove 删除软件
yum update 更新软件
yum search 查找
yum list 列出所有包
3.3 源代码安装
1.下载源代码安装包文件
2.tar解包:解压并释放源代码包到指定的目录
3../configure配置:设置安装目录、安装模块等选项
4.make编译:生成可执行的二进制文件
5.make install安装:复制二进制文件到系统,配置应用环境
6.测试及应用、维护软件
第四章 账号、权限及归属管理
4.1 账号管理
文件位置:/etc/passwd
4.1.1 useradd
-c 添加备注文字
-g 指定用户对应的用户组
-G 定义此用户为多个不同组的成员
4.1.2usermod
-c 修改用户账号的备注文字
-g 修改用户所属群组
-G 修改用户所属的附加组
-s 修改用户登录时所使用的shell
-u 修改用户ID
4.1.3userdel
-f | 强制删除用户账号 |
---|---|
-r | 删除用户主目录及其中的任何文件 |
4.1.4passwd
passwd [用户名]
root 用户才能执行passwd
echo 密码 |passwd --stdin 用户(免交互改密码)
-d | 删除密码 |
---|---|
-l | 锁定用户密码,无法被用户自行修改 |
-u | 解开已锁定用户密码,允许用户自行修改 |
-e | 密码立即过期,下次登录强制修改密码 |
-k | 保留即将过期的用户在期满后能仍能使用 |
-S | 查询密码状态 |
4.2 权限
4.2.1 chmod
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
使用+,-,=添加,删除相应的权限
u,g,o,a表示属主、属组、其他、所有
面试题:
执行 cp /etc/issue /data/dir/ 所需要的最小权限?
/bin/cp(cp命令的位置) 需要x权限
/etc/ 需要x权限
/etc/issue 需要r权限
/data 需要x权限
/data/dir 需要w,x权限
4.1.2 umask
umask 的值可以用来保留在创建文件权限
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
4.3 归属chown
-R | 对目前目录下的所有文件与子目录进行相同的拥有者变更 |
---|---|
-h | 只对于连结(link) |
[root@test1 data]# ll
总用量 28
-rw-r--r-- 1 root root 29 12月 3 18:24 config
-rw-r--r-- 1 root root 31 12月 3 18:16 ip.txt
[root@test1 data]# chown -R shi:shi /data
[root@test1 data]# ll
总用量 28
-rw-r--r-- 1 shi shi 29 12月 3 18:24 config
-rw-r--r-- 1 shi shi 31 12月 3 18:16 ip.txt
第五章 磁盘管理与文件系统
[root@localhost ~]#echo "- - -"> /sys/class/scsi_host/host0/scan
[root@localhost ~]#echo "- - -"> /sys/class/scsi_host/host1/scan
[root@localhost ~]#echo "- - -"> /sys/class/scsi_host/host2/scan
#scsi代表接口 把前面的数据传给接口用来刷新
5.1 fdisk磁盘分区
fdisk -l [磁盘设备]
[root@test1 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n #创建新的分区
所有主分区都在使用中。
添加逻辑分区 6
第一个扇区 (306642944-419430399, 默认 306642944):
上个扇区,+sectors 或 +size{K,M,G,T,P} (306642944-419430399, 默认 419430399): +2G
创建了一个新分区 6,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):w #保存
分区表已调整。
正在同步磁盘。
5.2 格式化
[root@test1 ~]# mkfs.xfs /dev/sda #格式化分区
sda sda1 sda2 sda3 sda4 sda5 sda6
[root@test1 ~]# mkfs.xfs /dev/sda6
meta-data=/dev/sda6 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
5.3 挂载
[root@test1 ~]# mkdir /data1 #新建一个空目录,用来挂载
[root@test1 ~]# mount /dev/sda6 /data1 #将sda6挂载在data1下
[root@test1 ~]# df #查看磁盘空间情况
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 2735612 0 2735612 0% /dev
tmpfs 2753312 0 2753312 0% /dev/shm
tmpfs 2753312 9168 2744144 1% /run
tmpfs 2753312 0 2753312 0% /sys/fs/cgroup
/dev/sda2 97608128 2468036 95140092 3% /
/dev/sda3 48803552 373344 48430208 1% /data
/dev/sda5 4872192 67036 4805156 2% /swap
/dev/sda1 1942528 216088 1726440 12% /boot
tmpfs 550660 0 550660 0% /run/user/0
/dev/sda6 2086912 47604 2039308 3% /data1
#开机自动挂载
vim /etc/fstab
设备文件 挂载点目录 文件系统类型(xfs,iso9660) 挂载参数(defaults) 0(不备份) 0(不检查)
5.4 解挂载
umount 挂载点目录
umount 设备文件
umount -lf 挂载点 强制解挂载
解挂前要先退出挂载目录