引言
小比特的随笔:
亲爱的博友所有随笔部分记录的是小比特的一些学习笔记,阅读性不是太强仅供有基础的博友参考,对小白来说阅读起来可能会有些吃力.当然也可以参考啦!小比特将在文章部分提供详细的内容介绍供小白入门,敬请期待吧!
为了让读者快速掌握Linux系统的基本操作,此次内容分为四部分完成对Linux系统基础学习.
第一部分 云计算系统管理
[ 云计算基础]
[Linux系统简介]
[Linux基本操作]
[命令行基础]
[目录和文件管理]
[管理用户和组]
[tar备份与恢复]
[cron计划任务]
[权限和归属]
[软件包管理]
[分区规划及使用]
[NTP时间同步]
[LVM逻辑卷]
[交换分区]
[触发挂载]
第一部分 云计算系统管理
1. Linux系统简介
Linux是一种操作系统!
Unix/Linux发展史(可通过百度百科详细了解)
UNIX诞生,1970-1-1
Linux的诞生:Linux之父,Linus Torwalds
– 1991年10月,发布0.02版(第一个公开版)内核
– 1994年03月,发布1.0版内核
– 内核版本号:主版本.次版本.修订号 4.10.123 用户------>内核------>硬件
2.Linux版本及应用
• 发行版的名称/版本由发行方决定
– Red Hat Enterprise Linux 5/6/7
– Suse Linux Enterprise 12
– Debian Linux 7.8
– Ubuntu Linux 14.10/15.04
3.Linux磁盘表示
hd,表示IDE设备 sd,表示SCSI设备
/dev/sda :表示SCSI设备,第一块
/dev/sdb :表示SCSI设备,第二块
/dev/sdc :表示SCSI设备,第三块
/dev/hdd :表示IDE设备,第四块
Linux系统中第三块SCSI硬盘如何表示? /dev/sdc
4.列出CPU处理器信息
[student@room9pc01 ~]$ lscpu #查看CPU的信息
CPU(s): 4
型号名称: Intel(R) Core(TM) i5-4430S CPU @ 2.70GHz
5.检查内存大小、空闲情况
[student@room9pc01 ~]$ cat /proc/meminfo #检查内存大小
MemTotal: 16330736 kB
6.列出当前系统的主机名称
[root@svr7 桌面]# hostname #查看主机名称
[root@svr7 桌面]# hostname A.tedu.cn #临时设置主机名
[root@svr7 桌面]# exit #关闭当前的终端
root@A ~]# ifconfig eth0 #查看网卡IP地址信息
[root@A ~]# ifconfig eth0 192.168.1.1 #临时设置IP地址
7.查看当前系统的版本
[root@localhost ~]# cat /etc/redhat-release #查看系统版本信息
CentOS Linux release 7.5.1804 (Core)
8.目录和文件管理
使用pwd、cd
pwd — Print Working Directory #用途:查看当前工作目录
cd — Change Directory #用途:切换工作目录
– 格式:cd [目标文件夹位置]
. 表示当前目录 .. 表示父目录 ~:家目录 ~user表示用户user的家目录 /root:管理员的家目录 /home:存放所有普通用户的家目录
ls — List # 格式:ls [选项]... [目录或文件名]
• 常用命令选项
– -l:以长格式显示,显示详细信息
– -A:包括名称以 . 开头的隐藏文档
– -d:显示目录本身(而不是内容)的属性
– -h:提供易读的容量单位(K、M等)
[root@1906 ~]# ls -lh /etc/passwd #显示文件的详细属性
[root@1906 ~]# ls -l /boot/ #显示目录内容详细属性
[root@1906 /]# ls -ld / #显示目录本身的详细属性
[root@1906 /]# ls -A /root #显示目录的所有内容,包括隐藏数据
使用通配符
• 针对不确定的文档名称,以特殊字符表示
– *:表示匹配任意多个任意字符 – ?:表示匹配单个字符
[root@1906 /]# ls /dev/tty* #显示tty开头的数据
[root@1906 /]# ls /etc/*tab #以tab作为结尾的数据
[root@1906 /]# ls /etc/*.conf #以.conf作为结尾的数据
[root@1906 /]# ls /dev/tty?
[root@1906 /]# ls /etc/??tab
• 针对不确定的文档名称,以特殊字符表示
– [a-z]:多个字符或连续范围中的一个,若无则忽略
– {a,min,xy}:多组不同的字符串,全匹配
[root@1906 /]# ls /dev/tty[3-8]
[root@1906 /]# ls /dev/tty{1,21,60}
[root@1906 /]# ls /dev/tty{1,3,5,7,9}
别名的定义:简化复杂的命令
• 查看已设置的别名
– alias [别名名称]
• 定义新的别名
– alias 别名名称= '实际执行的命令行'
• 取消已设置的别名
– unalias [别名名称]
[root@1906 /]# hostname #查看主机名称
[root@1906 /]# alias hn='hostname' #定义别名
[root@1906 /]# alias #显示当前系统有效别名
[root@1906 /]# hn #运行hn执行成功
[root@1906 /]# unalias hn #删除别名
• mkdir — Make Directory
– 格式:mkdir [-p] [/路径/]目录名...
[root@1906 /]# mkdir -p /vod/movie/cartoon #-p表示连父目录一起创建
[root@1906 /]# ls -R /opt/aa #-R表示递归显示
查找文本内容
• 根据字符串模式提取文本行
– grep [选项] '匹配模式' 文本文件...
• 常用命令选项
– -v,取反匹配
– -i,忽略大小写
[root@1906 /]# grep -v root /etc/passwd #取反查找
[root@1906 /]# grep -i ROOT /etc/passwd #忽略大小写
– ^word 以字符串word开头
– word$ 以字符串word结尾
[root@1906 /]# grep ^root /etc/passwd #以root开头
[root@1906 /]# grep bash$ /etc/passwd #以bash结尾
rm 删除
• rm — Remove – 格式:rm [选项]... 文件或目录...
• 常用命令选项
– -r、-f:递归删除(含目录)、强制删除
[root@1906 /]# rm -rf /opt/1.txt #强制删除所有
mv 移动/改名
• mv — Move – 格式:mv [选项]... 原文件... 目标路径
[root@1906 /]# mv /opt/a.txt /opt/nsd
重命名:路径不变的移动
[root@1906 /]# mv /opt/nsd/ /opt/haha
cp 复制
• cp — Copy – 格式:cp [选项]... 原文件... 目标路径
• 常用命令选项
– -r:递归,复制目录时必须有此选项
/etc:存放系统配置文件
/opt:用户可选择目录
[root@1906 /]# cp /etc/passwd /opt/
[root@1906 /]# cp -r /home /opt/
复制可以支持多个参数:永远把最后一个参数作为目标,其他的所有参数都作为源
]# cp -r /boot/ /etc/shadow /etc/resolv.conf /etc/hosts /opt/
复制经常与点连用: . 表示当前路径
[root@1906 network-scripts]# ls
复制出现重名:在本次操作临时取消别名
[root@1906 /]# \cp -r /boot/ /opt/ #本次操作临时取消别名
复制:可以重新命名,目标路径下数据
[root@1906 /]# cp /etc/passwd /opt/pa.txt
以下两次复制有何不同?
]# rm -rf /opt/* #删除/opt目录下所有内容
]# cp -r /home/ /opt/test
#将/home目录复制到/opt目录下重命名为test
]# cp -r /home/ /opt/test
#将/home目录复制到/opt/test目录下
重定向输出操作:将前面的命令的输出,写入到文本文件
>:覆盖重定向
>>:追加重定向
管道操作 | :
将前面命令的输出,交由后面命令处理,作为后面命令的参数
显示/etc/passwd的8至12行内容
[root@1906 ~]# head -12 /etc/passwd
[root@1906 ~]# head -12 /etc/passwd | tail -5
9.管理用户和组
用户帐号: 1.登录系统 2.确认身份,实现权限控制
组:方便管理用户 唯一标识: UID GID
组分类: 基本组(私有组) 附加组(从属组) 一个用户至少属于一个组
添加用户
用户基本信息存放在 /etc/passwd文件(系统级配置文件)
[root@1906 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本组GID:描述信息:家目录:解释器程序
使用 useradd 命令
– useradd [选项]... 用户名
• 常用命令选项
-u 用户id、-d 家目录路径、-s 登录解释器、-G 附加组
[root@1906 ~]# useradd -u 1500 nsd01 #创建用户指定UID
[root@1906 ~]# id nsd01
[root@1906 ~]# useradd nsd02
[root@1906 ~]# id nsd02 #查询nsd02用户基本的信息
[root@1906 ~]# ls /home/
]# useradd -d /opt/abc nsd05 #创建用户指定家目录
用户名:密码占位符:UID:基本组GID:描述信息:家目录:解释器程序
-s:指定解释器程序
/sbin/nologin:禁止用户登录系统
[root@1906 ~]# useradd -s /sbin/nologin nsd13
-G:指定附加组(从属组)
[root@1906 ~]# groupadd tedu #创建组tedu
[root@1906 ~]# useradd nsd15
[root@1906 ~]# id nsd15
[root@1906 ~]# useradd -G tedu nsd16 #创建用户指定附加组
[root@1906 ~]# id nsd16 #显示用户基本信息
设置登录密码
复杂密码: 3/4原则 字母 数字 大小写 特殊符号
• 使用 passwd 命令
[root@1906 ~]# useradd nsd17
[root@1906 ~]# passwd nsd17
更改用户 nsd17 的密码 。
新的 密码: #输入新的密码
重新输入新的 密码: #重新输入新的密码
passwd:所有的身份验证令牌已经成功更新
[root@1906 ~]# su - nsd17 #命令行临时切换身份
[nsd17@1906 ~]$ passwd
更改用户 nsd17 的密码 。
为 nsd17 更改 STRESS 密码。
(当前)UNIX 密码: #输入旧的密码
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[nsd17@1906 ~]$ exit #回到root用户
非交互式设置密码
[root@1906 ~]# echo 123 | passwd --stdin nsd17 #非交互式设置密码
用户密码信息存放在 /etc/shadow 文件
[root@1906 ~]# grep nsd17 /etc/shadow
nsd17:$6$UJ1UmCDO$uxsebJRVxjfOTUngX3nfI21mYCrEYiiPZs6Q4FD5Op7kzEtF7f8
u49XSm8AVGqm6X4Ny/pULXIKngkDIo7pSS1:18079:0:99999:7:::
用户名:密码加密字符串:上一次修改密码的时间:上一次修改密码的时间:1970-1-1~2019-7-2 经历的天数
修改用户属性
• 使用 usermod 命令
– usermod [选项]... 用户名
• 常用命令选项
– -u 用户id、-d 家目录路径、-s 登录解释器 -G 附加组
[root@1906 ~]# useradd nsd19
[root@1906 ~]# grep nsd19 /etc/passwd
]# usermod -u 2500 -G tedu -s /sbin/nologin -d /mnt/abc nsd19
[root@1906 ~]# grep nsd19 /etc/passwd
[root@1906 ~]# id nsd19
删除用户
• 使用 userdel 命令
– userdel [-r] 用户名
-r:连同家目录一并删除
[root@1906 ~]# userdel nsd01
[root@1906 ~]# userdel -r nsd02 #连同家目录一同删除
管理组账号
添加组
组基本信息存放在 /etc/group文件
• 使用 groupadd 命令
– groupadd [-g 组ID] 组名
[root@1906 ~]# groupadd tarena
[root@1906 ~]# grep tarena /etc/group
tarena:x:2010:
组名:组的密码占位符:组GID:组成员列表
管理组成员
• 使用 gpasswd 命令
– gpasswd -a 用户名 组名
– gpasswd -d 用户名 组名
[root@1906 ~]# gpasswd -a natasha tarena
[root@1906 ~]# grep tarena /etc/group
[root@1906 ~]# gpasswd -d dc tarena
[root@1906 ~]# grep tarena /etc/group
删除组
• 使用 groupdel 命令
– groupdel 组名
案例1:配置用户和组账号
• 新建用户 alex,其用户ID为3456,密码是flectrag
[root@1906 ~]# useradd -u 3456 alex
[root@1906 ~]# echo flectrag | passwd --stdin alex
• 一个名为 adminuser 的组
[root@1906 ~]# groupadd adminuser
• 为 natasha 的用户其属于adminuser组,这个组是该用户的从属组
[root@1906 ~]# gpasswd -a natasha adminuser
[root@1906 ~]# id natasha
• 为 harry 的用户,其属于adminuser组,这个组是该用户的从属组
[root@1906 ~]# gpasswd -a harry adminuser
[root@1906 ~]# id harry
• 为 sarah的用户,其在系统中没有可交互的Shell
[root@1906 ~]# useradd -s /sbin/nologin sarah
• natasha 、harry、sarah 的密码都要设置为 flectrag
10.tar备份与恢复
1.整合分散的数据 2.减小空间占用
归档和压缩
• 归档的含义
– 将许多零散的文件整理为一个文件
– 文件总的大小基本不变
• 压缩的含义
– 按某种算法减小文件所占用空间的大小
– 恢复时按对应的逆向算法解压
常见的压缩格式及命令工具:
.gz ---> gzip .bz2 ---> bzip2 .xz ---> xz
• tar 集成备份工具
– -c:创建归档
– -x:释放归档
– -f:指定归档文件名称
– -z、-j、-J:调用 .gz、.bz2、.xz格式的工具进行处理
– -t:显示归档中的文件清单
– -C(大写):指定释放路径
制作tar包格式:
tar 选项 /路径/压缩包的名字 /路径/被压缩的源数据 .....
]# tar -zcf /opt/file.tar.gz /home/ /etc/passwd
]# tar -jcf /opt/abc.tar.bz2 /home/ /etc/passwd
]# tar -Jcf /opt/nsd.tar.xz /home/ /etc/passwd
解包格式:
tar 选项 /路径/压缩包的名字 释放的路径
]# tar -xf /opt/file.tar.gz -C /mnt/
案例2:创建一个备份包
使用 tar 工具完成以下备份任务:
– 创建一个名为 /root/backup.tar.bz2 的归档文件
11.cron计划任务
cron任务概述
• 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
• 软件包:cronie、crontabs
• 系统服务:crond
• 日志文件:/var/log/cron
管理计划任务策略
• 使用 crontab 命令(不能自动创建目录,需要事先手动创建目录)
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]
如何编写任务记录
• 配置格式可参考 /etc/crontab 文件
分 时 日 月 周 任务命令行(绝对路径)
* * * * * #每分钟都执行
30 23 * * * #每天晚上11:30
30 23 * * 5 #每周的周五晚上11:30
30 23 * * 1,3,5 #每周的周五,周一,周三 晚上11:30
30 23 * * 1-5 #每周的周一至周五 晚上11:30
1 */2 * * * #每两个小时
分 时 日 月 周
1 8 1 * 2 #每周的周二或每月的一号
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...
利用root用户,每分钟记录当前系统时间,写入到/opt/time.txt
[root@1906 ~]# date #显示系统时间
[root@1906 ~]# date >> /opt/time.txt
[root@1906 ~]# cat /opt/time.txt
[root@1906 ~]# crontab -e
* * * * * date >> /opt/time.txt
[root@1906 ~]# crontab -l -u root
* * * * * date >> /opt/time.txt
13.权限和归属
基本权限的类别
• 访问方式(权限)
– 读取:允许查看内容-read r
– 写入:允许修改内容-write w
– 可执行:允许运行和切换-execute x
对文本文件:
r: cat less head tail
w: vim > >>
x: Shell脚本
• 权限适用对象(归属)
– 所有者:拥有此文件/目录的用户-user u
– 所属组:拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o
查看权限
• 使用 ls -l 命令
– ls -ld 文件或目录...
以 d 开头为目录
以 - 开头为文本文件
以 l 开头为快捷方式
• 使用 chmod 命令
– chmod [-R] 归属关系+-=权限类别 文档...
[-R]:递归设置权限
[root@server0 ~]# chmod g+w /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod ugo=rwx /nsd01
[root@server0 ~]# ls -ld /nsd01
[root@server0 ~]# chmod u=rwx,g=rx,o=rx /nsd01
[root@server0 ~]# mkdir -p /opt/aa/bb/cc #递归创建
[root@server0 ~]# chmod -R o=--- /opt/aa #递归设置
Linux判定一个用户拥有的权限 匹配及停止
Permission denied :权限不足
目录的r权限:能够 ls 浏览此目录内容
目录的w权限:能够执行rm/mv/cp/mkdir/touch更改目录内容的操作
目录的x权限:能够 cd 切换到此目录
以root用户新建/nsddir目录,在此目录下新建readme.txt文件
并进一步完成下列操作
1)使用户lisi能够在此目录下创建子目录 su - lisi
chmod o+w /nsddir/
2)使用户lisi不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户lisi能够修改readme.txt文件内容
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能cd进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
-R:递归设置权限,目录下及目录下所有
设置文档归属
• 使用 chown 命令
– chown [-R] 属主 文档...
– chown [-R] :属组 文档...
– chown [-R] 属主:属组 文档...
[root@server0 ~]# mkdir /nsd03
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# groupadd tedu
[root@server0 ~]# chown lisi:tedu /nsd03
[root@server0 ~]# ls -ld /nsd03
利用root用户新建/nsd06目录,并进一步完成下列操作
1)将属主设为gelin01,属组设为tarena组
[root@server0 /]# useradd gelin01
[root@server0 /]# useradd gelin02
[root@server0 /]# groupadd tarena
[root@server0 /]# chown gelin01:tarena /nsd06
2)使用户gelin01对此目录具有rwx权限
除属主与属组之外的人,对此目录无任何权限
[root@server0 /]# chmod o=--- /nsd06
3)使用户gelin02能进入、查看此目录内容
[root@server0 /]# gpasswd -a gelin02 tarena
4)将gelin01加入tarena组, 将nsd06目录的权限设为rw-r-x---
再测试gelin01用户能否进入此目录
[root@server0 /]# gpasswd -a gelin01 tarena
[root@server0 /]# chmod u=rw,g=rx /nsd06
设置权限,让lisi用户可以读取/etc/shadow文件内容,有几种办法?
1.利用其他人:chmod o+r /etc/shadow
2.利用所属组:chown :lisi /etc/shadow chmod g+r /etc/shadow
3.利用所有者: chown lisi /etc/shadow chmod u+r /etc/shadow
4.利用ACL策略 setfacl -m u:lisi:r /etc/shadow
14.附加权限(特殊权限)
Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设
置与父目录相同的属组
– 自动继承父目录所属组身份
[root@server0 ~]# chmod g+s /nsd08/ #设置Set GID
[root@server0 ~]# ls -ld /nsd08/
财务: caiwu组
/nsd09/20190703.txt
[root@server0 ~]# chown :caiwu /nsd09
[root@server0 ~]# chmod g+s /nsd09
Set UID
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
[root@server0 ~]# cp /usr/bin/mkdir /usr/bin/hahadir
[root@server0 ~]# chmod u+s /usr/bin/hahadir
Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入
权限(禁止操作别人的文档)
[root@server0 ~]# chmod o+t /public
[root@server0 ~]# ls -ld /public
acl访问控制列表
acl策略的作用
• 文档归属的局限性
– 任何人只属于三种角色:属主、属组、其他人
– 无法实现更精细的控制
• acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
[root@server0 ~]# setfacl -m u:lisi:rx /nsd11
[root@server0 ~]# getfacl /nsd11 #专用于查看ACL策略
使用 getfacl、setfacl 命令
– getfacl 文档...
– setfacl [-R] -m u:用户名:权限类别 文档...
– setfacl [-R] -m g:组名:权限类别 文档...
– setfacl [-R] -x u:用户名 文档... #删除指定ACL
– setfacl [-R] -b 文档... #清除所有ACL
]# setfacl -m u:genlin01:rwx /nsd14
]# setfacl -m u:genlin02:--- /nsd14 #设置无任何权限
]# getfacl /nsd14
]# setfacl -x u:genlin02 /nsd14 #删除指定ACL策略
]# getfacl /nsd14
]# setfacl -x u:genlin01 /nsd14 #删除指定ACL策略
]# getfacl /nsd14
]# setfacl -b /nsd14 #清除所有的ACL策略
]# getfacl /nsd14
15.软件包管理
下载软件包
• 使用wget下载工具
– wget 软件包的URL网址
– wget 软件包的URL网址 -O(大写) /目录路径/新文件名
真机的浏览器: Ctrl + f 当前页面查找 vsftpd
http://classroom.example.com/content/rhel7.0/x86_64/dvd/Packages/
• RPM Package Manager,RPM包管理器
– rpm -q 软件名...
– rpm -ivh 软件名-版本信息.rpm...
– rpm -e 软件名...
[root@server0 ~]# rpm -q vsftpd #查询软件是否安装
未安装软件包 vsftpd
[root@server0 ~]# rpm -q firefox
firefox-24.5.0-1.el7.x86_64
]# rpm -ivh /root/vsftpd-3.0.2-9.el7.x86_64.rpm
[root@server0 ~]# rpm -q vsftpd
[root@server0 ~]# rpm -e vsftpd #卸载软件
[root@server0 ~]# rpm -q vsftpd
]# rpm -ivh /root/vsftpd-3.0.2-9.el7.x86_64.rpm
]# rpm -ql vsftpd #查询已安装的软件,安装了那些内容
[root@server0 ~]# rpm --import /root/RPM-GPG-KEY-redhat-release
[root@server0 ~]# rpm -e vsftpd
[root@server0 ~]# rpm -q vsftpd
未安装软件包 vsftpd
[root@server0 ~]# rpm -i /root/vsftpd-3.0.2-9.el7.x86_64.rpm
常见的提示:
]# rpm -ivh /root/bind-chroot-9.9.4-14.el7.x86_64.rpm
错误:依赖检测失败:
bind = 32:9.9.4-14.el7 被 bind-chroot-32:9.9.4-14.el7.x86_64 需要
16.Yum配置及使用,自动解决依赖关系安装软件
服务:自动解决依赖关系安装软件
服务端: 1.众多的软件包 2.仓库数据文件 3.构建Web服务或FTP服务
光盘内容中
总结:构建Web服务或FTP服务,共享光盘所有内容
虚拟机classroom构建Web服务,共享光盘所有内容
客户端: 虚拟机server 书写一个配置文件,指定服务端位置
– /etc/yum.repos.d/*.repo
错误的文件会影响正确配置文件
[root@server0 ~]# rm -rf /etc/yum.repos.d/*
[root@server0 ~]# vim /etc/yum.repos.d/dc.repo
[haha] #仓库标识,随意写不能有特殊字符
name=rhel7.0 xixi hehe #仓库描述信息
baseurl=http://classroom.example.com/content/rhel7.0/x86_64/dvd/ #指定服务端位置
enabled=1 #是否启用本文件配置
gpgcheck=0 #是否检测红帽签名信息
[root@server0 ~]# yum repolist #显示仓库信息
[root@server0 ~]# yum -y install sssd
[root@server0 ~]# yum -y install httpd
yum的使用
[root@server0 ~]# yum info 软件名
[root@server0 ~]# yum info vsftpd #查询软件介绍信息
[root@server0 ~]# yum remove 软件名
[root@server0 ~]# yum remove httpd #卸载软件
清空Yum的缓存
[root@server0 ~]# yum clean all #清空yum缓存
已加载插件:langpacks
正在清理软件源: haha
Cleaning up everything
[root@server0 ~]# yum repolist #检查yum源
案例2:升级Linux内核
1.下载新的内核软件包
[root@server0~]#wget http://classroom.example.com/content/rhel7.0/x86_64/errata/Packages/kernel-3.10.0-123.1.2.el7.x86_64.rpm (可以去linux挂网下载相应内核版本)
[root@server0 ~]# uname -r #查看内核版本信息
3.10.0-123.el7.x86_64
[root@server0 ~]# rpm -ivh /root/kernel-3.10.0-123.1.2.el7.x86_64.rpm #更新内核
[root@server0 ~]# reboot #重启系统
17.分区规划及使用
扇区默认大小 512字节
容量单位: EB
1EB=1024*1024TB
一块硬盘的“艺术”之旅
• 识别硬盘 => 分区规划 => 格式化 => 挂载使用
毛坯楼层 => 打隔断 => 装修 =>入驻
一 识别硬盘
sd:SCSI设备 hd:IDE设备 vd:虚拟设备
[root@server0 ~]# lsblk #查看当前系统所有的硬盘信息
NAME SIZE TYPE MOUNTPOINT
vda 10G disk
└─vda1 10G part /
vdb 10G disk
二 分区规划
• MBR/msdos 分区模式
– 1~4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)
– 最大支持容量为 2.2TB 的磁盘
– 扩展分区不能格式化
/dev/sda1:第一块SCSI硬盘,第一个主分区
/dev/sda5:第一块SCSI硬盘,第1个逻辑分区
• 修改硬盘的分区表,分出两个主分区,大小都为2G
[root@server0 ~]# fdisk /dev/vdb
n 创建新的分区--->回车--->回车-->回车--->在last结束时 +2G
p 查看分区表
n 创建新的分区--->回车---->回车--->回车--->在last结束时 +2G
d 删除分区
w 保存并退出
[root@server0 ~]# lsblk
[root@server0 ~]# ls /dev/vdb[1-2]
三 格式化 :赋予空间文件系统的过程
文件系统:存储数据的规则
Windows: NTFS FAT
Linux: ext4(RHEL6) xfs(RHEL7)
[root@server0 ~]# mkfs.ext4 /dev/vdb1 #格式化为ext4
[root@server0 ~]# blkid /dev/vdb1 #查看文件系统类型
[root@server0 ~]# mkfs.xfs /dev/vdb2 #格式化为xfs
[root@server0 ~]# blkid /dev/vdb2 #查看文件系统类型
四 挂载使用
[root@server0 ~]# mkdir /mypart1 #创建挂在目录
[root@server0 ~]# mount /dev/vdb1 /mypart1 #挂载
[root@server0 ~]# df -h #正在挂载的设备使用情况
五 开机自动挂载 /etc/fstab
[root@server0 ~]# vim /etc/fstab #配置开机自动挂载
设备路径 挂载点 类型 参数 备份标记 检测顺序
/dev/vdb1 /mypart1 ext4 defaults 0 0
[root@server0 ~]# umount /mypart2 #取消挂载
[root@server0 ~]# df -h #查看挂载
[root@server0 ~]# mount -a #刷新挂载目录
检测/etc/fstab开机自动挂载配置文件,格式是否正确
检测/etc/fstab中,书写完成,但当前没有挂载的设备,进行挂载
综合分区:
最终实现3个主分区均为2G 划分扩展分区,划分2个逻辑分区均为1G
1.识别硬盘 lsblk
2.分区规划 fdisk
3.分区表刷新 partprobe
4.格式化 mkfs.ext4 mkfs.xfs blkid
5.挂载使用 mount df -h
6.开机自动挂载 /etc/fstab mount -a
18.LVM逻辑卷
综合分区:
图形添加一块100G硬盘,划分3个主分区,一个扩展分区,三个逻辑分区
[root@server0 ~]# lsblk
[root@server0 ~]# fdisk /dev/vdc
[root@server0 ~]# lsblk
LVM逻辑卷
1.整合分散的空间(分区或整个磁盘)
2.空间的可以扩大
– 零散空闲存储 ---- 整合的虚拟磁盘 ---- 虚拟的分区
物理卷(pv) Physical Volume
卷组(vg) Volume Group
逻辑卷(lv) Logical Volume
将众多的物理卷,整合成卷组,再从卷组中划分逻辑卷
LVM管理工具集
功能 物理卷管理 卷组管理 逻辑卷管理
Scan 扫描 pvscan vgscan lvscan
Create 创建 pvcreate vgcreate lvcreate
Display 显示 pvdisplay vgdisplay lvdisplay
Remove 删除 pvremove vgremove lvremove
Extend 扩展 / vgextend lvextend
一 制作逻辑卷
successfully(成功)
1.制作卷组
命令格式: vgcreate 卷组名 设备路径
]# vgcreate systemvg /dev/vdb /dev/vdc1 #创建卷组
]# vgs #查看卷组信息
]# pvs #查看物理卷信息
2.创建逻辑卷
命令格式:lvcreate -L 大小 -n 逻辑卷名称 基于卷组名
]# lvcreate -L 16G -n vo systemvg #创建逻辑卷
]# lvs #查看逻辑卷信息
]# vgs
]# ls /dev/systemvg/vo #查看逻辑卷设备文件
3.逻辑卷的使用
]# mkfs.xfs /dev/systemvg/vo #格式化文件系统
]# blkid /dev/systemvg/vo #查看文件系统
]# vim /etc/fstab #查看自动挂载目录
/dev/systemvg/vo /mylv xfs defaults 0 0
]# mkdir /mylv #创建挂载目录
]# mount -a #测试是否书写正确
]# df -h #显示正在挂载设备的使用情况
19.逻辑卷的扩展
一 卷组有足够的剩余空间
1.扩展空间
[root@server0 ~]# lvs
[root@server0 ~]# vgs
[root@server0 ~]# lvextend -L 18G /dev/systemvg/vo
[root@server0 ~]# lvs
2.文件系统的扩展
扩展ext4文件系统: resize2fs
扩展xfs文件系统: xfs_growfs
[root@server0 ~]# df -h
[root@server0 ~]# xfs_growfs /dev/systemvg/vo
[root@server0 ~]# df -h
二 卷组没有足够的剩余空间
1.扩展卷组空间
]# vgextend systemvg /dev/vdc2 /dev/vdc3
]# vgs
2.扩展逻辑卷空间
[root@server0 ~]# lvs
[root@server0 ~]# vgs
[root@server0 ~]# lvextend -L 25G /dev/systemvg/vo
[root@server0 ~]# lvs
3.文件系统的扩展
[root@server0 ~]# df -h
[root@server0 ~]# xfs_growfs /dev/systemvg/vo
[root@server0 ~]# df -h
了解:逻辑卷也可以做缩小 首先缩小文件系统,在缩减空间
ext4支持缩小 xfs不支持缩小
补充内容: 卷组划分空间的单位 PE 默认 1PE=4MB
[root@server0 ~]# vgdisplay systemvg #显示卷组详细信息
PE Size 4.00 MiB
创建一个逻辑卷名为lvredhat,大小为250M
]# vgchange -s 1M systemvg
]# vgdisplay systemvg
]# lvcreate -L 250M -n lvtest systemvg
]# lvs
修改PE的大小为1M
创建一个逻辑卷为500个PE组成
逻辑卷名为lvtest
-l:PE的个数
]# vgchange -s 1M systemvg #修改PE的大小
]# vgdisplay systemvg #查看卷组详细信息,PE的大小
]# lvcreate -l 500 -n lvtest systemvg
]# lvs
逻辑卷的删除:
首先删除逻辑卷,然后在删除卷组(基于该卷组没有任何的逻辑卷)
[root@server0 ~]# lvremove /dev/systemvg/lvredhat
Do you really want to remove active logical volume lvredhat? [y/n]: y
Logical volume "lvredhat" successfully removed
[root@server0 ~]# lvs
[root@server0 ~]# lvremove /dev/systemvg/vo
Logical volume systemvg/vo contains a filesystem in use.
[root@server0 ~]# umount /mylv/
[root@server0 ~]# lvremove /dev/systemvg/vo
Do you really want to remove active logical volume vo? [y/n]: y
Logical volume "vo" successfully removed
[root@server0 ~]# lvs
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
systemvg 4 0 0 wz--n- 39.98g 39.98g
[root@server0 ~]# vgremove systemvg
Volume group "systemvg" successfully removed
[root@server0 ~]# vgs
20.查找文件
• 根据预设的条件递归查找对应的文件
– find [目录] [条件1] [-a|-o] [条件2] ...
– 常用条件表示:
-type 类型(f文件、d目录、l快捷方式)
-name '文档名称'
[root@server0 ~]# find /boot/ -type d #目录查找
[root@server0 ~]# find /boot/ -type f #文件查找
[root@server0 ~]# find /boot/ -type l #快捷方式查找
[root@server0 ~]# find /etc/ -name 'passwd' #文档名称查找
[root@server0 ~]# find /etc/ -name '*tab'
[root@server0 ~]# find /etc/ -name '*tab*'
[root@server0 ~]# find /etc/ -name '*.conf'
]# find /root/ -name 'nsd*' -a -type f
]# find /root/ -name 'nsd*' -type f
]# find /root/ -name 'nsd*' -type d
-size +或-文件大小(k、M、G)
-user 用户名 #按照数据的所有者进行查找
[root@server0 ~]# find /boot/ -size +10M #大于10M的
[root@server0 ~]# find /boot/ -size -10M
[root@server0 ~]# find /boot/ -size +300k
/proc:不占用磁盘空间,占用内存空间
[root@server0 ~]# find / -user student
[root@server0 ~]# find /home -user student
-mtime 根据文件修改时间
-mtime +10 #10天之前的数据
-mtime -10 #最近10天之内的数据
[root@server0 ~]# find /root/ -mtime +1000
[root@server0 ~]# find /root/ -mtime +10
[root@server0 ~]# find /root/ -mtime -2
三个月以前:
[root@server0 ~]# find /root/ -mtime +90
21.find扩展使用
• 使用find命令的 -exec 操作
– find .. .. -exec 处理命令 {} \;
– 优势:以 {} 代替每一个结果,逐个处理,遇 \; 结束
]# find /boot/ -size +10M
]# find /boot/ -size +10M -exec cp {} /opt \;
]# find /root/ -name 'nsd*' -exec rm -rf {} \;
案例4:查找并处理文件
• 使用find命令完成以下任务
– 找出所有用户 student 拥有的文件
– 把它们拷贝到 /root/findfiles/ 文件夹中
]# find / -user student -type f -exec cp {} /root/findfiles/ \;
22.grep用法
显示文件的有效信息(去除注释行,去除空行)
]# grep -v ^# /etc/login.defs
]# grep -v ^# /etc/login.defs | grep -v ^$
]# grep -v ^# /etc/login.defs | grep -v ^$ > /opt/1.txt
]# less /opt/1.txt
在Linux大多数配置文件中,以#开头的行为注释行
^$ : 匹配空行
23.NTP时间同步
查看修改系统时间:
[root@server0 ~]# date
[root@server0 ~]# date -s '年-月-日 时:分:秒'
[root@server0 ~]# date -s '2008-10-1 12:10:1'
2008年 10月 01日 星期三 12:10:01 CST
NTP网络时间协议
• Network Time Protocol
– NTP服务器为客户机提供标准时间
– NTP客户机需要与NTP服务器保持沟通
NTP服务器:虚拟机classroom提供标准时间
NTP客户机:虚拟机server同步时间
1.安装chrony客户端软件,寻找时间服务器
[root@server0 ~]# yum -y install chrony
[root@server0 ~]# rpm -q chrony
chrony-1.29.1-1.el7.x86_64
2.修改配置文件
[root@server0 ~]# vim /etc/chrony.conf
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
server classroom.example.com iburst #指定服务端
3.重启程序(重启服务)
daemon 英 [ˈdiːmən] 美 [ˈdiːmən](古希腊神话中的)半神半人精灵
]# systemctl restart chronyd #重启程序
]# systemctl enable chronyd #设置开机自启动
4.测试验证:
[root@server0 ~]# date -s '2000-10-1'
2000年 10月 01日 星期日 00:00:00 CST
[root@server0 ~]# systemctl restart chronyd
[root@server0 ~]# date
2000年 10月 01日 星期日 00:00:13 CST
[root@server0 ~]# date
2019年 07月 05日 星期五 16:21:59 CST
24.准备交换空间(虚拟内存)
缓解真实物理内存的压力
• 相当于虚拟内存,
----当物理内存不够用时,使用磁盘空间来模拟内存
----在一定程度上缓解内存不足的问题
----利用fdisk进行分区,划分两个主分区分别为2G
[root@server0 ~]# fdisk /dev/vdb
[root@server0 ~]# lsblk
二 格式化为交换文件系统
[root@server0 ~]# mkswap /dev/vdb1 #专业格式化交换文件系统
[root@server0 ~]# blkid /dev/vdb1 #查看文件系统类型
三 启用交换分区
[root@server0 ~]# swapon /dev/vdb1 #启用交换分区
[root@server0 ~]# swapon -s #查看交换空间的成员信息
[root@server0 ~]# swapoff /dev/vdb1 #停用交换分区
[root@server0 ~]# swapon -s
四 开机自动启用交换分区
[root@server0 ~]# vim /etc/fstab
/dev/vdb1 swap swap defaults 0 0
[root@server0 ~]# swapoff /dev/vdb1
[root@server0 ~]# swapon -s
[root@server0 ~]# swapon -a #专门检测/etc/fstab交换分区
[root@server0 ~]# swapon -s
25.补充内容:触发挂载(autofs)
准备工作:在划分一个2G的主分区
[root@server0 ~]# fdisk /dev/vdb
[root@server0 ~]# partprobe #刷新分区表
[root@server0 ~]# lsblk
[root@server0 ~]# mkfs.xfs /dev/vdb3 #格式化文件系统
[root@server0 ~]# blkid /dev/vdb3
1.安装触发挂载的软件包
[root@server0 ~]# yum -y install autofs
2.重启autofs程序
[root@server0 ~]# systemctl restart autofs
[root@server0 ~]# systemctl enable autofs
3.完成对/dev/vdb3触发挂载的配置
最终实现:访问路径/nsd/dc 挂载设备/dev/vdb3 到/nsd/dc
主配置文件:定义监控目录/etc/auto.master
格式:监控目录路径 挂载配置文件路径
挂载配置文件:定义挂载点目录与设备
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
挂载点目录 -fstype=文件系统 :挂载设备
[root@server0 /]# mkdir /nsd #必须手动创建监控目录
[root@server0 /]# vim /etc/auto.master
/nsd /etc/test
格式:监控目录路径 挂载配置文件路径
[root@server0 /]# cp /etc/auto.misc /etc/test
[root@server0 /]# vim /etc/test #修改挂载配置文件
dc -fstype=xfs :/dev/vdb3
格式: 挂载点目录 -fstype=文件系统 :挂载设备
[root@server0 /]# systemctl restart autofs
[root@server0 /]# systemctl status autofs #查看服务状态
[root@server0 /]# ls /nsd/dc
[root@server0 /]# df -h