初始化进程,linux5,6使用的是init命令,到linux7则使用的是systemd,但它不仅仅是做初始化进程,它还接管了service、chkconfig等配置任务
systemctl start 服务名称 ----------------------------启动服务
systemctl restart 服务名称 -----------------------------重启服务
systemctl stop 服务名称 -----------------------------关闭服务
systemctl status 服务名称 ------------------------------查看服务状态
systemctl enable 服务名称 -----------------------------加入到启动项
查看系统服务日志,他们都会被写入到/var/log/message文件内
注意:systemd是服务名称 systemctl是配置工具
kdump是收集我们系统内核的报错信息的,用于系统排错和调优
bash的优点:
1、通过tab键对命令进行自动补齐
2、通过方向键可以查看我们执行过的命令
3、可以编辑强大的bash脚本
4、具有实用的环境变量功能。
命令 参数 对象(命令、参数、对象之间必须有空格做间隔,空格可以是1一个也可以是多个)
参数之间是可以合并的,短格式和短格式之间可以合并,并且保留一个“-”,短格式和长格式之间不可以合并,长格式和长格式之间也不能合并。
man命令:是用来查看一个命令的帮助文档的
1、echo :将字符串输出到屏幕上,通常与管道符搭配,提取变量的内容,并将变量的内容输出到屏幕上
2、date: 查看系统时间,注意参数 -s等
3、reboot: 重启系统
4:poweroff : 关机,类似的命令还有 shutdown , init 0等
5、wget:用于下载文件用的
-b:后台下载模式
-P:下载到指定目录
-t:最大尝试次数
-c:断点续传
-p:下载页面内所有资源,包括图片、视频
-r : 递归下载
ps : 用于显示系统的进程信息
-a 查看所有进程的信息
-u 显示进程的详细信息
-x 即使进程没有终端也帮你显示出进程的信息
6、top:用于动态的查看系统进程的命令
显示的状态参数描述
R:正在运行,正在为用户提供服务。
S:正在休眠,等待为用户提供服务。
D : 进程不可中断。
Z:僵尸进程
T:已经停止的进程。
7、pidof: 用于获取一个服务的进程号码
8、kill:根据进程编号对应的服务结束一个进程,例如:kill + 进程号码
9:killall:结束一个服务对应的所有进程,例如:kill + 服务名称
10、ifconfig:用于查看网卡的配置信息,如果想确定网卡的IP地址配置是否是动态分配还是静态分配,可以查看 cat /etc/sysconfig/network-scripts/ifcfg-eno16777736的信息,查看里面的BOOTPROTO的值,如果是DHCP,就是动态分配,如果是NONE,就是静态分配。
11、uname: 用于查看系统架构及内核信息,搭配的参数有-a
12、uptime:用于查看linux系统的负载情况
13:free:用于查看系统的内存信息的,默认以KB为单位显示,如果想更人性化显示,就可以输入参数-h
14: who:用于查看我们的终端数量的详细信息,功能一样的命令还有w
15:last:用于显示系统的登录记录(仅供思考),它的记录信息可被修改,这个信息是系统的日志信息(可被修改)
16:history:用于查看系统历史执行的命令记录,如果想重复执行某条命令,可以使用!加history显示的历史命令的编号,比如:!45, history -c用于清空history里的命令执行记录
17、sosreport:当系统出现故障的时候,可以通过sosreport搜集一下系统故障信息,可以发给redhat进行故障分析。
18、pwd:显示当前所在的工作目录
19、 cd:用于切换目录, cd ~ 用于切换到当前用户的家目录,cd - 返回上一次所在的工作目录,cd … 上一级所在的目录
20、 cat:查看一个文件的内容,适用于查看短小文件,cat -n在查看文件内容的同时,加上行号。
21、 more:查看一个文件的内容,适用于大文件
22、head:如果想看文件的前10行内容,可以用head命令+参数-n 10, 比如:head -n 10 wenjian.txt
23、tail:如果想看文件的后10行内容,可以用tail命令+参数stat -n 10,比如:tail -n 10 wenjian.txt
24、tail -f 就是实时刷新一个文件,一般与日志文件进行搭配 例如:tail -f /var/log/message
25、wc:用于统计一个文件的行数,字节数、单词数 -l:统计行数; -w:统计单词数;-c:统计字节数 常用:wc -l /etc/passwd
26、stat:用于查看一个文件的最后一次访问时间,真实修改文件内容修改时间、修改文件属性及信息的时间 inode保存的是一个文件的属性信息,block保存的是一个文件的真实信息
27、cut:按列提取文件信息,参数-d表示指定的分隔符,-f 1 ,例如提取/etc/passwd 文件里面第一列的账号信息,可以使用 cut -d : -f 1 /etc/passwd
扩展一下 统计系统里面有多少个账号 可以通过管道符进行命令的输入 ,例如:cut -d : -f 1 /etc/passwd | wc -l
28、diff:对比两个文件的不同之处,并显示出来,如果只想知道两个文件是否不同,而不列出两个文件的不同之处,可以加参数 --brief
29、touch:新建一个文件(空白文件),如果要修改一个文件的ctime,mtime,就用touch -d参数,例如:touch -d “09:00” ceshi
30、mkdir:新建一个目录,如果新建一个嵌套递归的目录,那么可以使用mkdir -p,例如:mkdir -p /a/b/c/d/e/f
31、cp:将一个文件从一个地方复制到另一个地方,cp -a 是复制文件的时候保持原有文件的属性
32、mv:将一个文件从一个地方剪切到另一个地方,在同一个目录下对一个文件进行剪切操作的本质就是对这个文件进行重命名
33、rm:删除一个文件,rm -f是强制删除的意思。 rm -r是删除一个目录, rm -rf是强制删除一个目录
34、dd:按照指定的大小进行复制,例如 dd if=a.txt of=b.txt bs=20 count=1 bs是块的大小,count是块儿的个数
35、file:用来查看一个文件的类型
36、tar:打包跟解压的操作,tar -czvf c:打包归档的意思,z:gzip压缩的格式 j:bzip2 v:显示打包或解压的过程 f:打包或解压后文件的名称
37、grep:过滤命令,把一个文件里包含关键字的内容全部提取出来,例如:grep network anaconda-ks.cfg ,grep -n过滤完内容之后并显示行号,grep -v反选过滤
38、find: 查找搜索命令 后面加-name参数,-name 后面跟要查找的文件名; -user 后面跟用户,作用是查找所有后面归该用户的文件
find后面可以跟-exec参数 参数后面跟要执行的命令,作用是将前面的查找的内容作为后面命令执行的输入, 后面用;作结束符,例如:查找从根目录下查找所有属于linuxprobe用户的文件,然后复制到root目录下:
find / -user linuxprobe -exec cp -rf {} /root ;
39、alias :给要执行的命令建立一个别名,例如: alias hh=“grep -n network anaconda-ks.cfg”
直接输入alias,系统会列出当前系统建立的命令的别名列表
40、hostnamectl : 用于设置主机名,例如:hostnamectl set-hostname lijianbo
重定向分为输入重定向和输出重定向,输出重定向的作用就是将原本要输出到屏幕上的信息输出到文件或命令中执行,输出包括:标准输出跟错误输出,输入的符号是:<,输出的符号是:>,错误输出的符号是2>,
标准输出与错误输出都包括覆盖输出与追加输出
覆盖输出的符号:>
追加输出的符号:>>
将标准输出和错误输出同时输出到一个文件中的符号是,&>
管道符的作用,将原先需要输出到屏幕上的内容交由给后面的命令再来执行
通配符的作用,是匹配一个或多个任意字符,*通配一个或多个字符,?通配单个字符,精准通配【0-9】,通配0、1、2、3、4、5、6、7、8、9
如果一个用户的终端属性被设置成/sbin/nologin,那么这个用户就不能登录终端了
passwd用来重置用户的密码的,passwd有一个–stdin参数,用于从一个管道符中读取内容,然后进行密码的修改,比如:想修通过管道符修改root密码,可以通过执行命令: echo “新密码” | passwd --stdin root
$$ :两个$符显示的是当前进程的编号
\:转义字符,去除符号后的特殊功能,保留原意
’ ':是将单引号里的内容进行全部转义
:反引号,作用是会执行反引号里面的命令
命令的执行方式(步骤):
1、如果输入的是命令的绝对路径,那么这个命令会直接进行执行,优先级最高!
2、如果输入命令不是绝对路径,那么它会先检测输入的命令是否是执行命令的别名
3、区别是否是系统的内部命令或外部命令
如果想在PATH变量里面添加新的查询路径信息,那么可以通过以下命令来进行执行:
PATH=$PATH:/root/bin
特别注意:每个用户建立的变量都是局部变量,如果想把局部变量升级为全局变量,通过以下命令进行:
export 变量名 ,例如:将用户建立的变量名WORK升级为全局变量,可以使用export WORK
linux里一切皆文件,配置一个服务就是配置这个服务对应的配置文件
vim编辑器主要有三种运行模式:1、命令模式;2、输入模式;3、末行模式
vim的使用技巧:
1、dd:删除(剪切)光标所在的整行。
2、5dd:删除(剪切)从光标处开始的5行。
3、yy:复制光标所在的整行。
4、5yy:复制从光标处开始的5行。
5、p:将之前删除(dd)或复制(yy)过的数据粘贴到光标后。
6、u:撤销,还原操作。
7、/ :/后面跟要搜索的关键词,n是下一个匹配项,它是从上往下进行搜索
8、?:?后面跟关键词,是从下网上进行匹配,从下网上进行搜索。
9、 :数字 :将光标快速定位到数字那一行
RHEL7 通过vim编辑器编辑网卡的设置,路径是:
vim /etc/sysconfig/network-script/ifcfg-eno16777728
BASH脚本的格式:
1、脚本的声明,用来说明脚本的执行环境 例如: #!/bin/bash
2、脚本的注释,介绍脚本的功能及相关信息 例如: #
3、脚本主体
BASH脚本里的一些内置变量
例如:echo $1,$3,$5 用于输出第1个,第3个,第5个参数的信息
例如:echo KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,* 用于输出接收到参数的个数,
∗
用
于
输
出
接
收
到
的
参
数
分
别
是
什
么
例
如
:
*用于输出接收到的参数分别是什么 例如:
∗用于输出接收到的参数分别是什么例如:? 用于判断上一条命令是否执行成功
例如:$0 用于输出脚本的名称,也就是需要执行脚本的文件名
条件测试语句可以分为4种:
1、文件测试语句;
例如:[ -d /etc ] ,通过echo $?来输出上一条命令的执行情况,0,即为成功,1,即为失败,从而判断文件是否是一个目录;
例如:[ -f /etc ] , 用于判断etc是否是一个文本文件,或者是个一般文件
例如:[ -r /etc ] , 用于判断一个文件是否有读取权限
例如:[ -w /etc ] , 用于判断一个文件是否有写权限
例如:[ -x /etc ] , 用于判断一个文件是否有执行权限
例如:[ -e /etc ] , 用于判断一个文件是否存在
2、逻辑测试语句;
(1)、&&逻辑与,当前面的命令成立的时候,执行后面的语句。
(2)、||逻辑或,当前面的命令不成立的时候,执行后面的语句。
例如:判断一个用户是否是root用户的语句:
[ $USER = root ] && echo “root” || echo “user”
3、逻辑值比较语句;
(1)、-eq : 是否等于
(2)、-ne: 是否不等于
(3)、-gt: 是否大于
(4)、-lt: 是否小于
(5)、-le: 是否等于或小于
(6)、-ge: 是否大于或等于
应用:
[ free -m | grep Mem: | awk '{print $4}'
-le 1024 ] && echo “Insufficient Memory” || echo “Memory Full”
4、字符串比较语句;
(1)、 -z判断一个变量是否被使用过 例如: [ -z HOHO ]
逻辑判断语句:
(1)、if逻辑判断语句:
1、单分支格式:
if 条件测试操作
then 命令序列
fi
例如: #!/usr/bin
DIR=/media/haha
if [ ! -e $DIR ]
then
mkdir -p $DIR
fi
2、双分支格式:
if 条件测试操作
then 命令序列1
else 命令序列2
fi
例如: #!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 &>/dev/null #/dev/null 是目录黑洞,将输出输出到该目录可以保证屏幕的清爽性
if 【 $? -eq 0 ]
then
echo "$1 is On-line"
else
echo "$1 is Off-line"
fi
3、多重分支格式:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
例如:#!/bin/bash
read -p "Enter:" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then
case条件测试语句
格式:
case 变量值 in 模式1)
命令序列1
模式2)
命令序列2
模式*)
默认命令序列
esac
例子:
#!/bin/bash
#代码说明
read -p "Enter" KEY
case "$KEY" in
[a-z]|[A-Z]) # | 逻辑或
echo "zimu"
;; #(结束判断)
[0-9])
echo "shuzi"
;;
*)
echo "qitazifu"
esac
linux的计划任务:
1、一次性的:使用at命令,一定要注意ctrl + D 是进行保存退出
at -l 查看计划任务的列表
at -c 计划任务列表编号 用于查看计划任务的详细信息
atrm 计划任务列表编号 用于删除已创建的对应编号的计划任务
2、周期性的:使用crond,crond是服务名称,crontab是配置工具
其实它的原理也是调用vim编辑器
在部署计划任务的时候,时间部署用的是:“分、时、日、月、星期、命令(绝对路径)”,没有的用*号补齐
如: 20 4 * * * /usr/sbin/reboot,表示每天的4:20重启电脑
20 4 */2 * * /usr/sbin/reboot,表示每隔2天的4:20重启电脑
*/5 4 * * * /usr/sbin/reboot,表示每天到4点的时候,每隔5分钟重启一次电脑
它使用crontab -e 来创建计划任务
用户权限
管理员:root UID:0,权限是最大的,限制是最小的,可以控制系统,可以管理硬件
系统用户: linux版本5、6时,UID编号1-499
linux版本7,UID编号是1-999,权限是最小的,甚至都不能登录系统,只能管理对应服务
对应的终端是:/sbin/nologin
普通用户:UID编号是:1000-65535(linux版本为5,6),1000-几十万个(linux版本为7时)
对应的终端是:/bin/bash
创建用户:useradd 后面跟要添加的用户名
useradd -u 用户UID 用户的名称:在添加用户的同时,可以指定添加用户的UID号码
useradd -s 终端路径(比如:/sbin/nologin):指定该用户的默认shell解释器
usermod: 用于修改用户的UID,GID,GROUP编号,对应的参数分别是 -u, -g(基本组),-G(扩展组)
查看用户的身份: id 会显示用户的属主、属组、其他的相关信息
添加用户组: groupadd 后面跟要添加的用户组名
用户组分为两个:1、基本组
2、扩展组
删除用户:userdel 后面跟用户名,但这个命令只是删除用户信息,并没有连用户的家目录等相关信息删除,所以,如果想彻底删除用户的相关信息,可以使用userdel -r + 用户名,就可以彻底删除该用户的相关信息。
linux里的文件标识:
-:表示普通或文本文件
d:表示目录
l:表示链接文件
b、c:表示块设备,比如光盘、鼠标、硬盘等硬件设备
p:管道文件
一个文件有三种权限(r读,w写,x执行)
r:能否读取文件内容的权限
w: 能否修改文件内容的权限
x: 能否有执行文件的权限
一个目录文件的三种权限(r读,w写,x执行)
r: 是否能读取一个目录文件列表的权限
w:是否能在目录里面进行复制、删除、移动、剪切、改名,即对文件属性的操作。
x: 是否具备切换、进入目录的权限
用数字表示文件的权限是:
r(读):4 w(写):2 x(执行):1
改变文件的权限的命令:chmod 比如:chmod 777 test.txt
改变文件的所有者跟所有组:chown 比如: chown lijianbo:lijianbo test.txt
特殊权限位(类似于尚方宝剑):特殊权限位是对我们一般权限的一种补充
suid :suid是让程序的执行者临时获得这个程序的所有者权限,一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限。 如果想设置SUID权限,可以使用 chmod u+s 进行设置
SGID: sgid对于程序而言,是让程序的执行者临时获得这个程序所有组的权限;sgid对于目录而言,是在这个目录里创建的所有文件,其权限都会归属到这个目录的权限 如果想设置SGID权限,可以使用 chmod g+s 进行设置
隐藏权限:是对我们一般权限的一种扩展,扩展一些功能
特点:1、通过ls命令是查看不到文件的任何隐藏权限的信息;2、root系统管理员也会受到我们隐藏权限的限制
chattr : 用于设置隐藏权限,如果要设置隐藏权限的方法是:chattr + 权限,如果要移走隐藏权限,可以使用:chattr - 权限
权限 i : 无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
权限a: 仅允许补充(追加)内容,无法覆盖/删除内容
lsattr : 用于查看隐藏权限
文件访问控制列表(权限):简称FACL,对某个用户,某个用户组进行文件权限的设置,这个可以达到精准的权限设置。
setfacl:用于设置facl,如果对于一个目录我们可以添加-R参数,如果对于一个文件我们可以添加-m参数,如果对于一个用户进行权限指定的,我们可以使用参数u进行操作,如果我们对于一个用户组进行权限指定,我们可以使用参数g进行操作,如果想删除设置的facl,可以加-b参数。
例如:
setfacl -m u:chenmengmeng:rwx study.txt
getfacl:用于查看facl,如果通过ls -l 文件 查看一个文件的详细信息,如果详细信息中那个点号(.)变成了加号(+),且这个文件的所属组被设置成了rwx,则说明这个文件被设置了facl。
账户切换
su 用户名
su - 用户名 :表示的是完全变更的意思
sudo命令的作用:
1、普通用户切换到管理员用户,不想泄露管理员密码;
2、切换到管理员权限,并不是可以做所有的事情,权限受限制。
可以通过visudo来进行设置sudo切换的权限,但一定要记住,visudo设置命令权限时,输入的命令应该是命令的绝对路径
存储结构
linux文件是从根目录开始的/(顶级目录) ,FHS就是LINUX的文件结构
/root :该目录保存系统管理员个人的隐私文件目录,即系统管理员的家目录
/home :该目录用于保存我们一些普通用户的家目录
/boot:用于放置我们开机的引导文件,启动菜单,以及所需的内核文件。
/dev :用于放置硬件的目录,比如:鼠标、键盘、光驱等系统所有管理的硬件目录,一般,在系统中光盘设备是:/dev/cdrom,硬盘设备是:/dev/sda
如果对应的老的IDE硬盘接口,则在系统中的表现形式为:/dev/hda
如果硬件设备是SCSI、SATA等设备,则在系统中的表现形式为:/dev/sda
如果是软盘设备,则在系统中的表现形式为:/dev/fda
如果是打印机设备,则在系统中的表现形式为:/dev/lpa
如果有多个光驱,那么在系统中第一个光驱对应的表现形式为:/dev/sr0,第二个光驱对应的表现形式为:/dev/sr1
/bin :保存二进制文件,跟开机无关的一些命令放在此目录下
/sbin:保存二进制文件,跟开机相关的一些命令放在此目录下,有些命令只有超级用户才能执行,也放到此目录下。
/etc :用于放置系统服务和配置的文件目录
/var :用于存放日志、数据库,网站等,经常发生改变的文件目录
/lib:用于存放系统函数库的文件目录
/usr :用于保存用户自己安装的软件及服务的目录
/media:用于挂载光盘和多媒体硬件的目录,挂载设备文件的
/tmp : 临时文件目录,用于存放临时文件的目录
/opt:用于放置第三方的软件
/srv :用于存放一些网络服务的数据文件目录(RHEL 7里已经省略该目录了)
/proc :虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/lost+found : 当文件系统发生错误时,将一些丢失的文件片段存放在这里
udev : 是一种文件的命名规范
/dev/cdrom :代表光盘
如果有多块光盘的话,可以通过下面查看命名规则:
/dev/sr0 /dev/sr1 /dev/sr2
/dev/sda :硬盘
linux的文件系统:Ext3(RHEL 5),Ext4(RHEL 6),XFS(RHEL 7)
主引导记录:MBR(446个字节)
每个扇区512个字节
如果拿到一块儿新的硬盘,需要进行3个步骤操作:
1、裁剪—分区操作,fdisk,如果分区后,通过ls -l /dev/sdb*,看不到分区内容,那么可以通过partprobe将分区信息强制同步到内核里
2、打格—格式化操作,mkfs.格式,如果要建立swap分区,则使用mkswap命令
3、使用—挂载 ,mount 绝对路径形式的设备名称 挂载目录 (命令输入即生效,重启失效)
注意:如果不想挂载了,卸载掉了,可以使用umount
格式:umont 绝对路径形式的设备名称(或者挂载目录)
mount 绝对路径形式的设备名称 挂载目录(命令输入及生效,重启失效)
如果要永久生效,需要将挂载写入到/etc/fstab文件中
格式:
/dev/sdb1(设备名称) /media/haha(挂载目录) ext4(分区格式) defaults(所能执行的权限) 0(是否进行自动备份) 0(是否进行开机自检)
df -h 用于查询挂载信息的
partprobe:用于将分区信息同步到内核系统里
如果要建立swap分区,则使用mkswap命令,建立完成后通过swapon进行系统内核同步,然后通过free -h进行查询您即可,如果想永久生效,也需要编辑/etc/fstab文件
格式:swapon /dev/sdb5
磁盘配额
ext3 ext4 :使用quota命令
xfs :使用 xfs_quota命令
链接文件:
1、软链接 ----类似于wndows的快捷方式, 命令: ln -s 原始文件 新文件
2、硬链接-----创建出来一个新的inode文件,实际block,缺陷是不能对目录和跨分区、跨硬盘进行操作 命令:ln 原始文件 新文件
raid (磁盘阵列组),伯克利大学研发的,全球90%的DNS都是通过bind搭建的!
raid0 :实现负载均衡,优点提升速度,缺点:成本没有提升,损坏机率增加。没有容错性 最少需要2块儿盘
raid1:实现冗余备份,提升了按全性,缺点:容量降低 最少需要2块儿盘
raid5: 至少需要3快硬盘
raid1+0 : 最少需要4块儿硬盘,其中2块儿做raid1,2块儿做raid1,然后raid1和raid1做raid0。
raid主要是解决安全性跟读写速度,LVM主要解决容量动态调整的问题
做raid的时候需要用的命令,格式如下:
mdadm : 管理raid的软件,软raid
mdadm -Cv(参数-C是创建参数,参数v显示创建的过程)/dev/md0(做完raid后虚拟出来的硬盘设备,一般不需要改动) -a yes (用于检测/dev/md0这个设备名是否被占用)-n 4 (是说明用几块用盘来做raid) -l 10 (用于说明制作raid的级别,比如raid0、raid1、raid5、raid10) /dev/sd[b-e]
以下是raid10的制作过程:
1、具体格式如下:mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sd[b-e]
2、mdadm -Q /dev/md0 (用于查看我们的raid组有哪些基本信息)
3、mdadm -D /dev/md0 (用于查看我们的raid组的详细信息,可以看到当前raid组中各块儿硬盘的同步状态)
4、blkid:用于查看设备名称跟我们设备标识符的UUID号码
5、mdadm -f /dev/md0p1 /dev/sdb(我们可以强制卸载某块儿硬盘,然后模拟进行破坏)
以下是制作raid5的制作过程:
1、mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sd[b-e] #-x参数是说明有一块儿硬盘做热备盘
2、mdadm -D /dev/md0
3 vim /etc/fstab
4、mkfs.ext4 /dev/md0
5、mount -a #挂载/etc/fstab下所有定义过但没有被挂载的设备
6、mdadm -f /dev/md0 /dev/sdc
7、mdadm -r /dev/md0 /dev/sdc #移除/dev/md0组的/dev/sdc信息
以下是将一块新的灾备盘添加到我们的raid5的阵列组里******************************************
1、df -h #先查看挂载信息
2、umont /dev/md0 #要想添加新的灾备盘,需要先把挂载的硬盘卸载掉
3、mdadm /dev/md0 -a /dev/sdc #将我们新添加的灾备盘加入到磁盘阵列组里
4、mdadm -D /dev/md0
5、mount -a
制作raid的主要目的是解决安全性跟读写速度,LVM的目的是为了解决我们分区容量的动态调整问题
LVM(逻辑卷管理器):作用可以将你的分区进行动态的调整
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan 扫描的目的是查看一下设备的信息
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce
特别注意:分区格式xfs是不支持LVM技术的,xfs默认就支持容量扩容,xfs也是不允许容量缩小的
LVM操作的步骤:
1、pv:操作的目的是为了能让设备支持我们的LVM技术
2、vg:操作的目的是为了能让我们的设备合并成一个大的卷组
3、lv:操作的目的是进行切割操作
LVM操作步骤:
1、 pvcreate /dev/sdb /dev/sdc #目的是让/dev/sdb,/dev/sdc支持LVM技术
2、 vgcreate dapangzi /dev/sd[b-c] #目的是创建卷组dapangzi(名字随便起),后面跟需要建立卷组的硬件设备
3、 vgdisplay #可以查看建立的卷组信息
4、 lvcreate -n haha -l 100 dapangzi #lvcreate是从我们卷组的资源池里进行切割,-n是你切割出去的设备名称,-l指定切割出去的大小,小写l指的是PE的大小,大写L是容量的大小
5、 lvdisplay #可以通过lvdisplay查看逻辑卷的详细信息
6、 mkfs.ext4 /dev/dapangzi/haha
7、 mkdir /media/haha
8、 mount /dev/dapangzi/haha /media/haha
9、 vim /etc/fstab
10、 cp -rf /etc/* ./
以下步骤是进行相关扩容************** 扩容和缩小容量是不会丢失数据的
11、 umount /media/haha #扩容前先将挂载的设备卸载掉,要不进行扩容会报设备正繁忙
12、 lvextend -L 800M /dev/dapangzi/haha
13、 e2fsck -f /dev/dapangzi/haha #强制去扫描我们的文件系统是否被损坏,如果损坏会造成我们的数据丢失
14、 resize2fs /dev/dapangzi/haha #通过resize2fs通知系统内核我们的/dev/dapangzi/haha容量发生了变化
15、 mount -a #然后进行重新挂载
××××××××××××××××××××××××××××××以下步骤是进行缩小操作××××××××××××××××××××××××××××××××××××××××××××
16、 umont /dev/dapangzi/haha
17、 e2fsck -f /dev/dapangzi/haha #强制去扫描我们的文件系统是否被损坏,如果损坏会造成我们的数据丢失
18、 resize2fs /dev/dapangzi/haha 300M 通过resize2fs先通知系统内核我们的/dev/dapangzi/haha容量发生了变更,如果报错了,就是不能进行缩小
19、 lvreduce -L 300M /dev/dapangzi/haha
20、 mount -a
建立的逻辑卷对应的设备路径为: /dev/卷组的名称/逻辑卷的名称,如上步骤,则建立的是: /dev/dapangzi/haha
linux快照:
快照执行的命令:
lvcreate
要保证建立的快照所需的磁盘需要被挂载
快照备份磁盘的大小要跟被备份的文件大小最少得一样
切记:linux建立的快照只能被还原一次
格式:
1、lvcreate -L 300M -s -n SNAP /dev/dapangzi/haha #参数-s是建立快照的意思,/dev/dapaangzi/haha是被进行快照的目录
2、cd /media/haha
3、rm -rf *
3、umount /media/haha
4、lvconvert --merge /dev/dapangzi/SNAP #lvconvert是恢复快照的命令,–merge是合并的意思,后面跟快照卷的名称
5、mount -a
***************************删除LVM的步骤××××××××××××××××××××××××××××××××××××××××××××××××××××××××
1、umount /dev/dapangzi/haha
2、vim /etc/fstab #删除掉配置文件中的挂载信息
3、lvremove /dev/dapangzi/haha #先删除建立的逻辑卷
4、vgremove dapangzi #然后删除建立的逻辑卷组
4、pvremove /dev/sdb /dev/sdc #最后删除支持的LVM的我们添加的设备
linux配置网卡有4种方法:
1、编辑配置文件:
vim /etc/sysconfig/network-script/ifcfg-eno16333329
2、nmtui(图形化管理界面): >>>>>>>>>>>>>>>>>>>>>>>>>>>推荐使用
3、nm-connection-editor
4、在右上角点击网络图标进行配置
linux防火墙规则链
1、INPUT链:处理流入的数据包
2、OUTPUT链:处理流出的数据包
3、FORWARD链:处理转发的数据包
4、PREROUTING链:在进行路由选择前处理数据包 牵扯SNAT(源地址转换协议),DNAT(目的地址转换协议)问题
5、POSTROUTING链:在进行路由选择后处理数据包
iptables:3表5个链(规则链)
iptables : rhel5、6里才有的,他是基于内核级的防火墙
firewalld: rhel7里才有,同时保留了iptables
RHEL7.0-7.1(版本号): iptables还有所保留
RHEL7.2-7.5(版本号): 已经彻底不包含iptables了,全部改用firewalld。
iptables -L :用于查看当前已有的策略
iptables -F :用于清空当前默认规则链中的策略
iptables -P :用于设置一下默认的规则链
iptables防火墙有四个动作:
1、允许 ACCEPT
2、拒绝 REJECT : #红帽考试拒绝操作的推荐使用REJECT
3、拒绝 DROP :直接对数据包进行丢弃
4、日志 LOG
防火墙的策略是从上往下进行匹配,越靠上优先级越高,一旦匹配上,就不进行下面的匹配了
iptabels -I :目的是把加入的策略优先级放到最高(建议使用该参数,这样设置后的策略被最先应用)
iptables -A : 目的是把加入的策略的优先级放到最低
记住,全部允许的时候写上拒绝的规则,全部拒绝协商允许的规则。
设置防火墙策略及动作的操作步骤,如下:
1、iptables -P INPUT(规则链的名称) DROP(执行的动作)
2、iptables -I INPUT -p(支持的协议,主要有tcp,udp,icmp) icmp -j ACCEPT (参数-j是匹配到规则后执行的动作)
删除防火墙策略及动作的操作,方法有两种:
第一种:
iptables -F 清空当前所有的默认策略
第二种,如果想清空默认规则链中的某条策略:
iptabels -D INPUT 1 (即删除规则链中设置的第1条策略)
比如:设置ssh禁止登录的操作步骤:
1、iptables -P INPUT ACCEPT
2、iptables -I INPUT -p tcp --dport 22 -j REJECT
在这个基础上,我们仅允许某台客户端主机访问我们服务器的22端口:
3、iptables -I INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT
如果我们仅允许某台客户端主机访问我们服务器的22,25,3389,21端口,操作如下:
iptables -I INPUT -s 192.168.10.1 -p tcp --dport 22,25,3389,21 -j ACCEPT
如果我们仅允许某台客户端主机访问我们服务器的连续的端口号,操作如下:
iptables -I INPUT -s 192.168.10.1 -p tcp --dport 22:25 -j ACCEPT
在这个基础上,我们仅允许某个网段访问我们服务器的22端口,操作如下:
iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
Firewalld : 主打的linux系统防火墙
zone : 区域,类似于模板的意思,作用就是快速的变更我们防火墙的策略,具体的有如下的区域:
序号 区域 默认规则策略
1、 trusted :允许所有的数据包
2、 home :拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,mdns,ipp-client,amba-client与dhcpv6相关,则允许流量
3、 internal:等同于home区域
4、 work :拒绝流入的流量,除非与流出的流量相关,而如果流量与SSH,ipp-client与dhcpv6-client服务相关,则允许
5、 public :拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh,dhcpv6-client服务相关,则允许流量
6、 external:拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量
7、 dmz :拒绝流入的流量,除非与流出的流量相关,而如果流量与ssh服务相关,则允许流量
8、 block :拒绝流入的流量,除非与流出的流量相关
9、 drop :拒绝流入的流量,除非与流出的流量相关
10 自定义区域
用两个工具来配置它:
1、firewall-cmd : 基于命令行的配置方法
2、firewall-config:基于图形化界面的配置方法
firewall-cmd 支持参数补全
查询默认所在的区域,操作步骤如下:
firewall-cmd --get-default-zone #结果应该是public
设置默认所在区域,操作步骤如下:
firewall-cmd --set-default-zone=work #这样就把默认区域设置成work了
查询一下public这个区域是否允许ssh这个服务,操作步骤如下:
firewall-cmd --zone=public --query-service=ssh
添加public这个区域某个服务被允许,操作步骤如下:
firewall-cmd --permanent --zone=public --add-service=https
firewalld防火墙策略配置生效机制有两种:
1、当前生效:runtime 仅当前生效,重启之后不生效
2、永久生效:permanent 当前并不生效,重启之后才生效
3、不重启加载永久生效里的配置,使之当前生效:reload
firewall-cmd --panic-on :紧急模式,一旦开启,就切断一切网络连接
做端口转发,当客户端主机访问服务器端的888端口,实际是访问服务器端的22端口,具体操作步骤如下:
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
富规则(复杂规则):目的是为了更精准的做策略匹配
设置富规则的步骤如下:
比如设置一个富规则,要求192.168.10.0这个网段的地址都不能访问服务器的ssh服务,具体操作步骤如下:
firewall-cmd --permanent --zone=public --add-rich-rule=“rule family=“ipv4” source address =“192.168.10.0/24” service name=“ssh” rejject”
1、linux里一切皆文件
2、在linux里配置服务,就是在修改服务的配置文件。
3、一般修改了配置文件,需要重启服务才能生效。
一块儿网卡它可以配置多个地址
LINUX系统配置防火墙的服务,工具有四种:
1、iptables:
2、firewall-cmd:
3、firewall-config:
4、tcp wrappers : 它有两个配置文件/etc/hosts.allow :允许放行;/etc/hosts.deny :拒绝禁止,设置后,不需要重启服务,即立即生效。 轻量级的,如果只是想限制某个服务。
/etc/hosts.allow的优先级要高于/etc/hosts.deny
前3种是基于数据链路层的,最后一个是基于应用层的。
------------------------------------------------------------------------------------RHCSA跟RHCE分界线----------------------------------------------------------------------------------------------
nmcli:网卡会话配置工具
具体操作步骤:
1、nmcli connection show 用于查看网卡硬件信息(包括网卡名称,UUID,支持的协议标准)
2、nmcli connection add con-name company ifname eno16777728 autoconnect no type ethernet ip4 192.168.10.10/24 gw4 192.168.10.1 设置一个网卡会话模板company
3、nmcli connection add con-name house type ethernet ifname eno16777736 设置一个网卡会话模板house
4、nmcli connection up company 启用company这个网卡会话模板
RHEL5,6 bonding(网卡绑定技术)
RHEL7 bonding(网卡绑定技术)在这个技术的基础上添加了team(端口聚合技术,是图形化界面)
网卡绑定技术类似于lvm或者是raid,是将多块而网卡虚拟成一块网卡的技术,最终虚拟出来的网卡设备为/dev/bond0
绑定网卡的具体操作步骤如下:
1、vim /etc/sysconfig/network-script/ifc-eno16777736 ,配置如下内容
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno16777736
MASTER=bond0
SLAVE=yes
2、vim /etc/sysconfig/network-script/ifc-eno33554948,配置如下:
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno33554948
MASTER=bond0
SLAVE=yes
3、vim /etc/sysconfig/network-script/ifc-bond0,配置如下:
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.10.10
PREFIX=24
DNS=192.168.10.1
NM_CONTROLLED=no #自动化管理你的网卡服务的程序 可以通过 systemctl status NetWorkManager来查看
网卡的绑定方式,主要有三种:0,1,6
1、第一种方式0:表示两块儿网卡同时去工作,有一块儿网卡出现故障了,另一块儿网卡自动顶替上去,平时需要交换机的支持,交换机为它做切换工作;
2、第二种方式1:表示两块儿网卡一主一备,只有第一块网卡down了才启动备用网卡
3、第三种方式6:表示两块儿网卡好的时候同时去工作,坏的时候自动顶替上去,保证网络之间不会中断。
4、vim /etc/modprobe.d/bond0.conf #.d里面包含的子配置文件
alias bond0 bonding #给这个bond0设置个别名,说明它支持绑定技术
options bond0 miimon=100 mode=6 #设置如果绑定的网卡其中一块故障了,切换至另一块网卡的时间,单位为毫秒,选择的绑定模式为6
小提示:ifdown 网卡名称 可以关闭网卡,模拟网卡down掉的情况
ifup 网卡名称 可以开启网卡,模拟网卡重新UP的情况
ssh(协议名称):安全的远程连接协议
sshd(服务名称):sshd服务程序让用户实现了ssh远程连接的功能
几乎所有的linux系统都已经支持并默认启用了ssh.
服务的配置文件有两种:1、主配置文件;(保存的是最重要的配置参数) 一般在 /etc/服务名称/服务名称.conf 查询
2、普通配置文件(保存的是通用性,需要调用的配置文件) 一般在 /etc/服务名称 查询
ssh配置公钥跟私钥的登录认证方式:
切记,秘钥跟公钥是在客户端主机上进行生成的,然后将公钥发送到服务器端然后对私钥登录进行解密跟认证。
1、在客户端做的操作,具体步骤如下:
ssh-keygen 来生成秘钥跟公钥文件
ssh-copy-id 将公钥传送到远端服务器
ssh不光是远程连接的协议,而且还能进行文件的传输(小文件的传输)
scp(基于ssh协议产生出的命令),前提条件是必须在两个都是linux的系统之间进行文件传输
发送文件的操作步骤如下:
scp ceshi.txt 192.168.10.10:/tmp
下载文件的操作步骤如下:
scp 192.168.10.10:/root/hoho.txt /root
YUM仓库的配置方法:
1、mkdir -p /media/cdrom
2、mount /dev/cdrom /media/cdrom
3、vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0
4、cd /etc/yum.repos.d/
5、rm -rf *
6 vim /etc/yum.repos.d/xiao.repo
[rhel-yum] #这个是我们定义yum仓库的唯一名称
name=nezha #这个名称是注释的作用
baseurl=file:///media/cdrom #这个就是挂载目录的路径(切记,三个斜杠)
enabled=1 #用于说明是否启用YUM资源,1为启用,0为禁止
gpcheck=0 #用于说明是否进行校验
以上配置好YUM仓库以后,就可以进行软件安装了
软件安装的步骤是:
1、yum install 软件包的名称
例如:通过YUM仓库安装screen服务,screen服务是为了解决网络中断出现的链接问题
yum install screen
*************************出现的小问题××××××××××××××××××××××××××××××××××××
REHL7中yum 安装提示 GPG.KEY问题
解决方法 导入 gpg.key
用 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY 导入 一般情况下
GPG KEY,一般系统都会有的,在你的linux安装光盘目录下,或者在/etc/pki/rpm-gpg/目录下有一个RPM-GPG-KEY-redhat-release
如果导入失败 那么 可已将GPG.KEY路径直接加入到你编辑的/etc/yum.repos.d/下的rhel7.repo 保存退出
然后 yum clean all
yum list 就ok了
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
在服务器添加完公钥后报错
1、sign_and_send_pubkey: signing failed: agent refused operation
这个时候我们只要执行下
1、eval “$(ssh-agent -s)”
2、ssh-add
就可以了
为了保证我们能安全的通过ssh进行远程链接,我们通过screen先建立一个窗口会话保护机制
1、通过ssh链接之后,先不做任何操作,先通过screen先建立一个窗口会话
screen -S haha
然后模拟网络中断,比如把客户端端口断开,然后重新链接,然后通过
screen -ls #可以查询当前screen的会话窗口列表
然后通过 screen -r 会话名称(比如:haha)或者会话窗口编号进行恢复
2、如果不想每次ssh链接都先建立一个screen窗口会话保护机制,即ssh建立远程链接默认启用screen窗口保护机制,那么可以通过如下操作进行:
例如:
screen vim haha.txt
3、screen还能实现窗口会话共享的机制:
比如一台客户端连接到服务起后建立的窗口会话保护机制:
screen -S liudehua 对应的窗口会话的编号为3148
那么另一台共享的窗口会话就可以通过如下操作查看共享:
screen -x 3148
Apache(Apache来自印第安语,是力量无穷的意思)安装
Apache可以提供httpd服务
http:协议
httpd:服务名称
httpd:软件包名称
nginx的优点:消耗很小的资源,产生出很大的并发量
可以通过YUM仓库进行apache httpd服务的安装,操作如下:
1、yum install httpd
2、systemctl restart httpd
apahce默认的网站保存路径在:/var/www/html;
如果apache的httpd服务安装完成后,只能服务器本机能正常访问网页,而远端客户端主机通过80端口访问不了,那么就可以推断有可能是被防火墙禁止了,可以通过
iptables -F 将防火墙的策略进行初始化或清空操作
如果想修改网站默认的保存路径,可以通过修改服务的配置文件来实现:
vim /etc/httpd/conf/httpd.conf (apahce服务的主配置文件)
SELinux:安全子系统,分为两种:
1、SELinux安全上下文:针对的是文件,可以对文件进行打标签,限制文件能够被哪些服务所访问
具体命令如下:
setenforce 0: 临时关闭SELinux功能
setenforce 1: 临时开启SELinux功能
getenforce : 查看我们SELinux的状态
/etc/selinux/config: 这个文件保存的SELinux的状态信息:
SELinux有3种工作模式的:
1、enforcing:强制的,限制我们的域和安全上下文,一旦做出出格的事情,立马进行禁止操作。(默认选项,默认是开启的)
2、permissive:警告模式,一旦你做出出格的事情,一旦访问你不该访问的文件之后,那么就会给你提示信息,并将这个提示信息写到这个日志文件里,并不会进行强制禁止。
3、disabled:禁止模式,就是关闭SELinux的运行模式。
2、SELinux域:针对的是服务,管理服务的策略,服务功能的限制
注意:如果通过浏览器看到Red Hat Enterprise Linux Test Page,说明两个问题:
1、网站是没有内容资源的;
2、要不就是你没有权限,权限不足;
ls -ldZ #ls -l看目录是跟参数d,查看SELinux上下文,是跟参数Z
[root@lijianbo ~]# ls -ldZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[root@lijianbo ~]# ls -ldZ /home/wwwroot
drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/wwwroot
[root@lijianbo ~]#
如果想让/home/wwwroot也能正常访问网页,可以修改它的安全上下文,具体操作步骤如下:
RHEL 5,6 chcon
RHEL 7 semanage
1、[root@lijianbo ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot #fcontex就是修改安全上下文的意思,-a代表的是修改,-t代表具体要使用什么值
2、[root@lijianbo ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/* #这个操作是把/home/wwwroot这个目录下的所有文件添加到安全上下文中
restorecon:是selinux的恢复工具,这个功能实际作用是让最新的策略进行立即生效。
3、restorecon -Rv /home/wwwroot
个人用户主页功能:
配置个人用户主页功能的操作步骤如下:
1、vim /etc/httpd/conf.d/userdir.conf
将UserDir disabled 进行注释
将UserDir public_html 注释取消
2、getsebool -a 获取所有selinux域的策略
3、getsebool -a | grep httpd 获取所有selinux域中httpd的策略
4、setsebool -P httpd_enable_homedirs=on 设置httpd_enable_homedirs=on永久开启,-P参数代表的是永久生效的意思。
5、然后访问http://127.0.0.1/~用户名,即可访问
如果想通过账号和密码认证来访问http://127.0.0.1/~用户名,操作步骤如下:
1、htpasswd(这个命令是apache安装之后就会自带的命令,它的作用是为了生成出来密码文件的)
htpasswd -c /etc/httpd/passwd lijianbo #参数-c就是生成的意思, /etc/httpd/passwd就是生成保存的路径,lijianbo就是需要制作认证验证的账号名称
2、vim /etc/httpd/conf.d/userdir.conf 编辑如下内容:
authuserfile “/etc/httpd/passwd” #设置需要认证的文件的保存路径
allowoverride none #是否允许伪静态
authname “HAHAHAHAHAHAHA” #进行认证时给用户的提示信息
authtype basic #认证的方式basic(基于用户名跟密码的认证方式)
require user lijianbo #基于认证的用户名称