4.8网络命令及实例项目
1.网络中较重要的协议
1.DNS 域名解析协议
ARP 交换机 主机---MAC地址
路由器 主机---IP地址
DNS域名 域名---IP地址
- 47.75.85.161 IP太长 起名为域名
www.baidu.com 域名
3.购买自己的一个域名
根域名服务器 大多在国外
顶级域名服务器
com cn org edu等
公司商业组织 地区中国
万网
.vip
bj_xxxxx@163.com
阿里云为例
A记录 www 网站 www.baidu.com记录值IP地址x.x.x.x
DNS优化 阿里云加速
百度云加速 css js html 预加载到服务器上CDN加速
2.企业真实的需求
1.hosts文件
2内网DNS服务器
linux服务器 NDS
1)本地服务器解析
2)|---->主路由-->DNS-->公网IP
windows server 2008R2
3.常见的网络命令
1.ping命令
ping域名DNS问题
ping www.baidu.com无应答DNS没有配置 DNS有问题
ping 公网IP
47.75.80.160
ping 网关
192.168.1.1
2.iftop 监控网络流量用的
linux服务器下用的 第三方的命令
yum install ifop-y
4.企业网络出现问题的排查流程
第一步 检查硬件 网卡网线(水晶线) – 路由器 交换机
交换法
|--->网线、网卡
第二步 ping 网关(路由)
第三步 公网IP
第四步 DNS
第五步 ping 自己服务器地址
静态路由项目
1.准备3台虚拟机
第一台一块网卡 10.0.0.11
第二台两块网卡 10.0.0.12 192.168.0.12
第三台一块网卡 192.168.0.13
主机一与主机三需要更改网卡配置
主机二需要添加一块网卡而且第二块网卡没有设置需要复制后更改网卡为192.168.0.12
主机二第二块网卡与主机三网卡设置为LAN区段192.168.0.0/24
2.在第一台主机
从主机一 10.0.0.11 --->主机二--->192.168.0.12
跨网段不认识
2 .1添加一条静态路由信息
route add -net 192.168.0.0/24 gw 10.0.0.12
route -n 查看路由表
ping 192.168.0.12
主机一10.0.0.11与主机二第二块网卡192.168.0.12连通
在第三台主机
从主机二10.0.0.12--->主机三--->192.168.0.13
跨网段不认识
2.2添加一台静态路由信息
route add -net 10.0.0.0/24gw 192.168.0.12
route -n 查看路由表
ping 10.0.0.12
主机三192.168.0.13与主机二第一块网卡10.0.0.12连通
在第二台主机
发现数据包在第二台虚拟主机被丢包
配置虚拟主机二修改内核转发参数,强制开启
echo “net.ipv4.ip_forward=1”>>/etc/sysctl.conf
sysctl -p 使命令生效
强制开启了第二台主机的路由转发,现在第三台虚拟主机已经可以收到虚拟主机一的数据信息。
第三台主机就能连上第二台主机了
数据双向传输OK
4.9shell编程基础
因为Web集群架构会用到Shell编程基础
1、为什么要学习Shell编程?
Linux系统中会大量的使用Shell,工作中我们也需要自动化实现业务,
例如:自动备份、监控、自动安装服务。
Shell编程是Linux运维人员必须要会的编程语言。最简单的编程语言。
编程也是运维人员必须具备的本领:
Shell、Python是运维人员必须具备的本领
2、什么是Shell?
Shell就是一个命令解释器(翻译官),命令行的命令以及脚本都会通过shell解释,传给操作系统,处理后在输出给用户。
[root@oldboyedu ~]# tail -1 /etc/passwd
oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash #<==创建用户时,系统指定的翻译官。
3、Shell的分类
- Bourne shellBourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三种类型。
- C shell
C shell又包括csh、tcsh两种类型。
C7支持的shell:
[root@oldboyedu ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash/bin
/sh是bash的软连接
4、C7:默认Shell
[root@oldboyedu ~]# echo $SHELL/bin/bash
5、什么是Shell脚本?
程序、命令放入文件里执行,这个文件称之为Shell脚本文件。
工作中最多的编程写脚本,存放在文件里。
6、Shell变量:
a.全局变量(环境变量) 在整个系统中生效、一般是大写、系统中默认就 存在一些这样的变量,满足系统和程序运行的需求。
系统自带的环境变量;
[root@oldboyedu ~]# echo $PS1
[[\e[34;1m]\u@[\e[0m][\e[32;1m]\H[\e[0m][\e[31;1m] \w[\e[0m]]\$
[root@oldboyedu ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@oldboyedu ~]# echo $HOME
/root
[root@oldboyedu ~]# echo $SHELL
/bin/bash[root@oldboyedu ~]# echo $UID
0
自定义环境变量:
方法1
export OLDBOY="I am oldboy."
方法2:
OLDBOY="I am oldboy."
export OLDBOY
[root@oldboyedu ~]# export OLDBOY="I am oldboy."
[root@oldboyedu ~]# echo $OLDBOY
I am oldboy.
/etc/profile==>/.bash_profile===>/.bashrc===>/etc/bashrc
老男孩推荐以后把环境变量放入/etc/bashrc
[root@oldboyedu ~]# tail -1
/etc/bashrcexport OLDBOY="I am oldboy."
[root@oldboyedu ~]# . /etc/bashrc
[root@oldboyedu ~]# echo $OLDBOY #<==输出一个变量内容就加$变量名
I am oldboy.安装java服务的时候就会配置环境变量。
b.局部变量(普通变量)是编写Shell脚本最常用的变量。
变量名=值
a=1
变量名:数字、字母、下划线,不能是数字开头。
oldboy、 A123a、_abc
= 等号:赋值符,把什么东西给谁。
赋值符号两边不能有空格。
值:东西,变量内容。
引用内容的符号:单引号、双引号、反引号、不加引号
[root@oldboyedu ~]# a=1
[root@oldboyedu ~]# echo $a
1
[root@oldboyedu ~]# y=$x+1
[root@oldboyedu ~]# echo $y
1+1
[root@oldboyedu ~]# y="y
1+1
[root@oldboyedu ~]# y='$x+1'
[root@oldboyedu ~]# echo $y
$x+1
[root@oldboyedu ~]# y=\$x+1
-bash: 1+1: command not found
[root@oldboyedu ~]# let y="y2
[root@oldboyedu ~]# a=1
[root@oldboyedu ~]# echo ${a}b
1b
7、表达式
[ 表达式 ]中括号表达式,中括号里面两端必须要有空格。
字符串要加双引号
[root@oldboyedu ~]# [ "a" = "b" ] && echo 1||echo 0
0
[ "a" = "b" ] && echo 1||echo 0
如果表达式成立,打印1,否则打印0.
[ "a" = "b" ] && echo 1 #跟屁虫。
如果表达式成立,打印1
[ "a" = "b" ] || echo 0 #杠精。
如果表达式成立是假的,打印0
取反:
[ ! "a" = "b" ] && echo 1
整数表达式:
> -gt
>= -ge
< -lt
<= -le
= -eq
不等于 -ne
[root@oldboyedu ~]# a=1
[root@oldboyedu ~]# [ $a -eq 2 ] && echo 1||echo 0
0
[root@oldboyedu ~]# [ $a -eq 1 ] && echo 1 || echo 0
1
1)整数表达式符 两端必须要有空格
2)中括号里面两端必须要有空格。
3)变量和比较的内容,不需要加引号。
字符表达式:
-z 变量内容长度为0时,为真(表达式正确)。zero
-n 变量内容长度【不】为0时,为真(表达式正确)。not zero
a == a 字符串是否相同说明:
1)字符串要加双引号
例子:
[root@oldboyedu ~]# oldboy="I am oldboy"
[root@oldboyedu ~]# [ -z "$oldboy" ] && echo 1 || echo 0
0
[root@oldboyedu ~]# oldboy=""
[root@oldboyedu ~]# [ -z "$oldboy" ] && echo 1 || echo 0
1
[root@oldboyedu ~]# [ -n "$oldboy" ] && echo 1 || echo 0
0
[root@oldboyedu ~]# [ "test" == "host" ] && echo 1 || echo 0
0
[root@oldboyedu ~]# [ "test" == "test" ] && echo 1 || echo 0
1
8.shell判断句:
如果...那么。
如果[ 你是潜力股
]那么 就和你谈朋友
否则 拜拜
果如
if判断句语法:
if [ 表达式 ]
then
命令
fi
如果[ 你是潜力股 ]
那么 就和你谈朋友
果如
[root@oldboyedu ~]# cat test.sh
#!/bin/bash
a=10
if [ $a -gt 1 ]
then
echo 1
fi
如果[ 你是潜力股 ]
那么 就和你谈朋友
否则 拜拜
果如
[root@oldboyedu ~]# cat test.sh
#!/bin/bash
a=1
if [ $a -gt 1 ]
then
echo 1
else
echo 0
fi
[root@oldboyedu ~]# cat test.sh
#!/bin/bash
boy="潜力股"
if [ "$boy" == "潜力股" ]
then
echo "先和你谈谈朋友"
else
echo "白白"
fi
[root@oldboyedu ~]# sh test.sh
先和你谈谈朋友
[root@oldboyedu ~]# cat judge_date.sh
if [ $(date +%w) -eq 6 ]
then
echo "一起去旅游吧"
else
echo "还是好好上课吧"
fi
[root@oldboyedu ~]# sh judge_date.sh
还是好好上课吧
[root@oldboyedu ~]# date
Tue Apr 9 11:33:13 CST 2019
[root@oldboyedu ~]# date -s '2019/4/13'
Sat Apr 13 00:00:00 CST 2019
[root@oldboyedu ~]# sh judge_date.sh
一起去旅游吧
实现多条件
[root@oldboyedu ~]# cat judge_date.sh
if [ $(date +%w) -eq 6 ] || [ $(date +%w) -eq 0 ]
then
echo "一起去旅游吧"
else
echo "还是好好上课吧"
fi
read命令 交互式读取用户输入
-p "提醒:"
-t "多长时间内等待输入"
[root@oldboyedu ~]# read -p "请输入一句话:" boy
请输入一句话:潜力股
[root@oldboyedu ~]# echo $boy
潜力股
相当于boy="潜力股"
[root@oldboyedu ~]# cat test.sh
#!/bin/bash
read -p "请输入你喜欢的男孩的一句话:" boy
if [ "$boy" == "潜力股" ]
then
echo "先和你谈谈朋友"
else
echo "白白"
fi
[root@oldboyedu ~]# sh test.sh
请输入你喜欢的男孩的一句话:我没钱
白白
[root@oldboyedu ~]# sh test.sh
请输入你喜欢的男孩的一句话:潜力股
先和你谈谈朋友
[root@oldboyedu ~]# cat test.sh
#!/bin/bashread
-p "请输入你喜欢的男孩的一句话:" boy
if [ "$boy" == "潜力股" ]
then
echo "先和你谈谈朋友"
elif [ "$boy" == "老爸是李刚" ]
then
echo "直接嫁给你"
elif [ "$boy" == "二环内有套房" ]
then
echo "立马领证"
else
echo "白白"
fi
特殊位置变量:
$1 脚本文件的第一个参数赋值给$1
$2 脚本文件的第二个参数赋值给$2
[root@oldboyedu ~]# cat t.shecho $1 $2
[root@oldboyedu ~]# sh t.sh oldboy oldgir
loldboy oldgirl #<==oldboy就是$1输出的结果,oldgirl就是$2输出的结果。
[root@oldboyedu ~]# cat com_num.sh
#!/bin/sh
#read -p "请输入两个整数:" a b
a=$1
b=$2
if [ $a -gt $b ]
then
echo "$a>$b"
elif [ $a -eq $b ]
then
echo "$a=$b"
else
echo "$a<$b"
fi
[root@oldboyedu ~]# sh com_num.sh 2 3
2<3
[root@oldboyedu ~]# sh com_num.sh 2 2
2=2
[root@oldboyedu ~]# sh com_num.sh 3 2
3>2
9.for循环
for n in 取值列表
do 执行命令
done
[root@oldboyedu ~]# cat for1.sh
for n in 1 2 3 4 5
do
echo $n
done
[root@oldboyedu ~]# sh for1.sh
1
2
3
4
5
[root@oldboyedu ~]# sh -x for1.sh
+ for n in 1 2 3 4 5
+ echo 1
1
+ for n in 1 2 3 4 5
+ echo 2
2
+ for n in 1 2 3 4 5
+ echo 3
3
+ for n in 1 2 3 4 5
+ echo 4
4
+ for n in 1 2 3 4 5
+ echo 5
5
[root@oldboyedu ~]# cat for1.sh
for n in {1..5}
do
echo $n
done
[root@oldboyedu ~]# sh for1.sh
1
2
3
4
5
打印254个IP 10.0.0.1---10.0.0.254
[root@oldboyedu ~]# cat for1.sh
for n in {1..254}
do
echo "10.0.0.$n"
done书写脚本习惯:
1.创建文件以.sh结尾。
2.脚本开头第一行 写#!/bin/bash ==>脚本内容由谁解释。
4.10
比较:
diff vimdiff
[root@oldboyedu ~]# cp /etc/passwd{,.ori}
备份好处:
1、恢复。
2、比较、检查。
[root@oldboyedu ~]# diff /etc/passwd{,.ori}
32c32
< #oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
> oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
[root@oldboyedu ~]# diff /etc/passwd /etc/passwd.ori
32c32
< #oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
> oldgirl1:x:8889:8889::/home/oldgirl1:/bin/bash
rpm命令全称是Red Hat Package Manager(Red Hat包管理器),几乎所有的Linux发行版本都使用这种形式的命令管理、安装、更新和卸载软件。
概括地说,rpm命令有五种基本功能(不包括创建rpm包):安装、卸载、升级、查询和验证。
[root@oldboyedu ~]# mount /dev/cdrom /mnt
mount: no medium found on /dev/sr0
[root@oldboyedu ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@oldboyedu ~]# cd /mnt/
[root@oldboyedu /mnt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@oldboyedu /mnt]# cd Packages/
需要很多依赖。
[root@oldboyedu /mnt/Packages]# rpm -ivh dos2unix-6.0.3-7.el7.x86_64.rpm
Preparing... ################################# [100%]
package dos2unix-6.0.3-7.el7.x86_64 is already installed
[root@oldboyedu /mnt/Packages]# rpm -qa|grep tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu /mnt/Packages]# rpm -qa tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@oldboyedu ~]# rpm -qf /sbin/ifconfig
net-tools-2.0-0.24.20131004git.el7.x86_64
yum命令:
帮我们在rpm安装时解决软件包依赖,背后还是使用rpm,不需要直接使用rpm了
让安装软件更智能了。底层还是rpm在工作。
yum主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。
[root@oldboyedu ~]# yum grouplist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00:00
Available Environment Groups:
Minimal Install
Compute Node
Infrastructure Server
File and Print Server
[root@oldboyedu ~]# yum groupinstall "File and Print Server"
[root@oldboyedu ~]# yum list tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
tree.x86_64 1.6.0-10.el7 @base
[root@oldboyedu ~]# yum install tree -y
根据命令或者配置等的路径查属于哪个包
[root@oldboyedu ~]# yum provides /etc/my.cnf
[root@oldboyedu ~]# yum provides /sbin/ifconfig
Linux系统如何安装软件?
1、rpm安装简单
快。依赖多,解决依赖困难繁琐。
2、yum安装
简单快,自动解决依赖。不能选择软件版本或软件存放路径。
3、编译安装(源码编译)
慢 复杂 需要GCC编译器,可以自定义安装(版本、软件路径)
4、将源码制作成rpm,然后放到yum仓库,实现yum自动安装。
一次性慢 复杂,安装快,可以自定义安装(版本、软件路径)制作RPM YUM仓库搭建
chattr命令:
[root@oldboyedu ~]# chattr +i /etc/passwd #<==锁定文件不能删除,不能修改[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@oldboyedu ~]# lsattr /etc/hosts
---------------- /etc/hosts
[root@oldboyedu ~]# cp /etc/passwd{,.ori}
[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted
[root@oldboyedu ~]# echo ddd > /etc/passwd
-bash: /etc/passwd: Permission denied
[root@oldboyedu ~]# useradd littleboy
useradd: cannot open /etc/passwd
chattr -i /etc/passwd #<==解锁文件。
给重要文件上锁
[root@oldboyedu ~]# chattr +a oldboy.txt
[root@oldboyedu ~]# rm -f oldboy.txt
rm: cannot remove ‘oldboy.txt’: Operation not permitted
[root@oldboyedu ~]# echo dddd >>oldboy.txt
[root@oldboyedu ~]# echo dddd >>oldboy.txt
4.11
第 0 章 计算机硬件与组成基础
- 运维人员的三大重要职责是什么?
企业数据不丢失服务器
7*24小时不宕机
用户体验良好 - 衡量服务器尺寸的单位是什么?
U 1U=4.45cm - 互联网企业常见的服务器品牌以及型号有哪些?
戴尔dell 惠普HP IBM 浪潮 华为 联想
Dell服务器
1U的主流型号 2U的主流型号
1850.1950 2850.2950
R410.R610 R710
R420/430.R620/630 R720/R730 - 计算机硬件内存的特点有哪些?
读取快
直接与CPU相连,来满足CPU高速运算的需求
存储容量小及断电后不保存信息 - 简述程序、进程和守护进程之间的区别?
程序:放在硬盘中的代码文件
进程:在运行中的程序
守护进程:为执行某一项任务而持续运行的进程 - 简述 buffer 和 cache 区别?
写入缓冲区(buffer)
读取缓存区(cache) - 什么是远程控制卡,作用是什么?
可以远程管理服务器的工具远程管理服务器 - 磁盘常见的接口有哪几种?
SATA SSD SAS SCSI IDE - Raid 级别中的 0 和 1 分别有什么特点?
RAID 0 多块盘合成一块盘 容量、性能都是两块之和冗余为0
RAID 1 两块盘合成一块盘 容量、性能都以最小的盘为准100%冗余
第1章 Linux 系统介绍与环境搭建准备
- Linux 发展中三个重要人物及其贡献?
斯托曼自由软件与GNU发起人GPL协议
谭邦宁Minix开发者
linus linux之父 - 简述 GNU 是什么?
GNU is Not Unix 革奴计划 建立一个完全自由的可移植的类Unix系统 - GPL 协议核心内容有哪些?
通用公共许可保证任何人有共享和修改自由软件的自由,任何人都有权取得、修改和重新发布自由软件的源代码的权利,但都必须给出源代码。 - 常见的 Linux 发行版本有哪些?
RedHat Fedora Centos Debian Ubuntu - 简述 RedHat 和 CentOS 之间的区别?
掉RedHat的收费组件,重新编译添加新的logo后就是CentOSRedHat不再遵循GPL协议,成为收费产品(但仍开源)。 - 简述 RedHat 和 Fedora 系统之间的区别?
Fedora是RedHat的一个分支RedHat有新功能、新实验在Fedora上试用成功才在RedHat上发布 - 32 位系统和 64 位系统之间的区别?
1).设计初衷不同
2).要求配置不同
3).运算速度不同
4).寻址能力不同
5).应用领域不同 - 简述 Linux 系统有哪些优秀的特点?
是开放源代码的程序软件,可自由修改。Unix系统兼容,具备几乎所有Unix的优秀特性可自由传播,无任何商业版权制约适合Intel等x86cpu系列架构的计算机
第2章 企业级 CentOS7.6 操作系统安装
- 请简述 Linux 系统常见的几种分区及其作用?
普通分区 /boot 1024 M swap 内存大于8G给8G小于8G给内存的1.5倍 /给剩余所有
存储器分区/boot 1024 M swap 内存大于8G给8G小于8G给内存的1.5倍 /给100-200G剩余的/data
data可以任意名字
门户网站分区/boot 1024 M swap 内存大于8G给8G小于8G给内存的1.5倍 /给100-200G剩余的保留
将来谁需要谁就去拿 - 请描述企业中 Linux 系统中不同分区方式及其应用场景?
- 简述 Vmware 虚拟机中虚拟网卡有哪三种连接方式?
桥接模式
NAT模式
仅主机模式 - 简述桥接模式和 NAT 模式之间的区别?
NAT模式相当于主机时一个路由器虚拟机是建立在主机之上的桥接模式是建立的虚拟机和主机是同等的存在会拖慢网速 - 如何更改网卡默认名称为 eth0 的形式?
加载界面输入 net.ifnames=0 biosdevname=0
第3章 远程连接管理 Linux 实践 - 常见的远程连接 Linux 的工具有哪些?
xshell,secureCRT,putty,ssh - 远程连接工具采用的是什么协议,默认端口号是多少?
SSH
默认22端口 - 简述远程连接工具连接不上虚拟机的故障排查思路?
服务端运行。
客户端ping
客户端检查服务 IP端口别错,就是防火墙问题
xshell连接 - 启动 sshd 服务的命令是什么?
CentOS6:/etc/init.d/sshd restart
service sshd restart
CentOS7:systemctl restart sshd - 常见的无法远程连接服务器的原因有哪些?
服务端或客户端网卡、IP端口,进程启动不正确
物理链路有问题
对方没有提供服务
防火墙未关闭 - 查看网卡 ip 的命令有哪些?
ifconfig
ip all - 如何测试服务器能否连上互联网?
ping www.oldboyedu.com
ping 203.81.19.1 通的 但是ping www.oldboyedu.com不通。
如果网站没问题就是DNS问题
[root@oldboyedu /opt]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 223.5.5.5
ping 10.0.0.254 自身网关 - 什么是快照?
相当于一个备份 存储点 - Centos7 中如何修改默认网卡命名规则?
vim /etc/sysconfig/network-scripts/ifcfg-eth0
第4章 Linux 系统命令行入门基础
- 请描述命令行提示符的各组成部分含义?
[root@oldboyedu /opt]#
用户名 分隔符 主机名 路径 提示符 - 对于不会使用的命令如何查询帮助?
man
--help - Linux 系统关机命令有哪些?
poweroff halt shutwork -h init 0 - Linux 系统重启命令有哪些?
reboot shutdown -r init 6 - Linux 系统普通命令和内置命令有什么区别?
普通文件存放在系统文件里内置命令存放在bash解释器里 - 请写出在 Xshell 命令行模式下你所知道的快捷键命令?
Tab至少输入两次
ctrl+a光标移动到行首的位置;
ctrl+e光标移动到行尾的位置;
Ctrl+insert 复制命令行内容
Shift+insert 粘贴命令行内容
Ctrl+c中断正在执行的任务
Ctrl+d退出当前x shell命令还可以退出x shell
Ctrl+z暂停正在运行的服务
Crtl+l清屏;
ctrl+s锁屏;
ctrl+q解锁;
第5章 Linux 文件及目录管理命令基础
- 创建一个/oldboy 目录。
mkdir oldboy - 切换目录到/oldboy 下。
cd oldboy - 查看当前路径所在位置。
pwd - 在上述 oldboy 目录下创建一个 oldgirl.txt 文件。
cd oldboy
touch oldgirl.txt - 通过一条命令同时创建 oldboy1,oldboy2 两个目录。
mkdir oldboy1 oldboy2 - 把/oldboy/oldgirl.txt 文件复制到/opt 下。
cp /oldboy/oldgirl.txt /opt - 查看当前/opt 目录下有哪些文件。
ls -l /opt - 把/oldboy/oldgirl.txt 再次移动到/opt/下并且没有确认提示。
\mv /oldboy/oldgirl.txt /opt/ - 把/oldboy/oldgirl.txt 文件删除并且不提示。
\rm -f /oldboy/oldgirl.txt - 把/oldboy/目录删除并且不提示。
\rm -r /oldboy/
第6章 Linux 目录文件与系统启动知识
- 如何在 Vmware 下的 Linux 系统中看到 Linux 系统 ISO 文件镜像中文件?
mount /dev/cdrom /mnt - 配置网卡信息时需要修改那个文件?
/etc/sysconfig/network-scripts/ifcfg-eth0 - 请解释下列目录的作用
根下的目录 生产中常用的核心文件
/bin 二进制命令相关
/etc/sysconfig/network-scripts/ifcfg-eth0 网卡配置文件
/boot 系统内核及引导程序
/etc/resolv.conf 客户端DNS解析
/dev Device设备文件所在目录
/etc/hostname(CentOS7 特有) c7主机名配置文件
/etc 二进制软件包配置文件所在路径
/etc/sysconfig/network(CentOS6 及以前特有) C6主机名配置文件
/home 普通用户的家目录
/etc/hosts 系统本地的DNS解析文件/proc 虚拟的文件系统,存放进程和内核信息的目录。
/etc/fstab 开机自动挂载文件
/root 管理的家目录
/etc/rc.local 开机自启动文件
/sbin 管理员命令所在目录
/etc/redhat-release redhat内核版本号
/tmp 临时文件所在目录
/etc/sysctl.conf 系统本地的DNS解析文件
/usr 第二层次目录
/etc/systemd/system(CentOS7 特有)
/var 可变化的数据
/usr/lib/systemd/system(CentOS7 特有)
第7章 Linux 文件过滤及内容编辑处理
- vim 编辑器中的不同模式下的命令有哪些?
普通模式:移动光标:
行尾 $
行首 0
文件尾部 G
文件开头 gg
到指定行 阿拉伯数字gg
搜索与替换向下搜索 /3306 继续搜 按n,反向搜N
向上搜索 ?80 继续搜 按n,反向搜N
:%s###g 替换
删除单行 dd
(剪切)删除多行 ndd n
用任意数字替换撤销 u
单行复制 yy
多行复制 nyy n用任意数字替换
粘贴 p
进入编辑模式命令i
插入A
追加 行尾插入o
下一行开头插入O
上一行开头插入a
光标下一个字符插入
命令行模式
:wq 退出并保存
:wq! 退出并强制保存,“!”为强制的意思
:q! 强制退出,不保存
:set nu 显示行号
:set nonu 与set nu相反,取消行号 - 请写出给文件增加内容的方法(不少于三种)?
> >> vim - 怎样实现在目前文件内容的基础上追加“I am oldboy”内容到结尾?
>> - 按行插入数字序列 1-30 到文件/oldboy.txt 中?
seq 30 >/oldboy.txt - 如何只显示上述/oldboy.txt 中 10-20 行的内容。
grep -A10 10 oldboy.txt - 假设一个文件 test.txt 中有如下内容:
oldboy
Oldgirl
Oldboyedu
如何实现只打印出带有 Oldboyedu 的行?
tail -1 test.txt
8.如何将 test.txt 中所有的 old(含大写)都替换成 young?
grep -i "old" test.txt |sed -rn "s#old|Old#young#gp"
9.如何实现无论正确输出结果还是错误报错都不提示统一追加到/tmp/error.log 文件中?
echo "I am oldboy" >/tmp/error.log 2>/tmp/error.log
第8章 Linux 文件类型及查找命令实践
- 如何查看文件属性?
ls -lhi - 简述 d、b、c、s、l 分别代表什么类型文件?
目录 block 字符文件 套接字 软连接 - 如何查看文件的类型?
file - 如何查看一个文件的全路径?
whereis - 当前有一个名为‘oldboy.txt’的文件,已知它的大小为 12M,如何查找它所在的位置?
find / -type f -name "oldboy.txt" - 将查找到的 oldboy.txt 打包成tar文件并以当前日期命名,并检查该压缩包中包含的内容?
tar zcf $(date +%F).tar.gz oldboy.txttar tf $(date +%F).tar.gz - 将 oldboy.tar.gz 解压到指定的/tmp 目录?
tar zxf -C oldboy.tar.gz /tmp - 当前系统中时间不正确,如何修改?
date -s " 2019/4/11"
第9章 Linux 文件核心属性知识
- Linux 系统中用户分为哪几类,都有作用?
管理用户 管理主机
虚拟用户 不能登录,完成指定任务的用户
普通用户 可登录用着安全 - 简述 inode 和 block 的含义?
inode 索引节点是文件的身份标识
block 块 存放文件内容 - 如何查看文件对应的 inode?
df -i - 简述软硬链接之间的区别?
软链接占用inode 可跨文件、目录操作删除软连接源文件无影响,
删除源文件软连接失效
硬链接不占用inode可跨文件,不可跨目录操作删除硬链接源文件无影响,
删除源文件硬链接可以接着当作源文件用 - 如何创建文件的软连接和硬链接?
软链接 ln -s
硬链接 ln - 请简述 mtime,ctime,atime 分别代表什么含义?
atime 是在读取文件或者执行文件时更改的
mtime 是在写入文件时随文件内容的更改而更改的。
ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。 - 企业生产环境中,在目录中创建文件提示磁盘满了,实际 df –h 查看并没有满,如何解决?
inode 被占满了 小文件太多 删除些不太重要的小文件
第10章 Linux 通配符与特殊符号知识应用实践
- 解释以下通配符的作用 符号名称 作用
* 匹配所有
{} 生成序列
? 匹配单个字符
[a-z] 匹配任意一个字符
[!a-z] 不匹配任意一个字符
$ 普通用户提示符
! 取反
&& 和 交集
|| 或 并集 - 简述单引号,双引号和反引号之间的区别和作用?
'' 单引号 所见即所得
"" 双引号 引用字符串 解析变量、命令,推荐使用
``反引号 引用命令,解析命令
第11章 Linux 正则表达式与三剑客知识应用实践
- 简述 Linux 正则表达式和 Linux 命令行(Bash)通配符之间的区别?
在文本过滤工具里,都是用正则表达式,比如像awk,sed,等,
正则表达式是针对文件的内容的而通配符多用在文件名上,比如查找find,ls,cp,等等 - 已知 oldgirl.txt 内容下:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.commy qq num is 49000448.
请完成如下作答(请尽量思考多种方法)
问题 1:输出 oldboy.txt 的第 2-3 行内容?
sed -n '2,3p' oldboy.txt
问题 2:过滤出含有 oldboy 字符串的行。
grep 'oldboy' oldboy.txt
问题 3:删除含有 oldboy 字符串的行。
grep -v 'oldboy' oldboy.txt
问题 4:将文件中的 oldboy 字符串全部替换为 oldgirl。
sed -n 's#oldboy#oldgirl#gp' oldboy.txt
问题 5:将文件中的 oldboy 字符串全部替换为 oldgirl,同时将 QQ 号码 49000448 改为 31333741。
sed -e 's#oldboy#oldgirl#g' -e 's#49000448#31333741#g' oldboy.txt
问题 6:在 oldboy.txt 文件的第 2 行后追加文本。
sed "2a 追加文本" oldboy.txt
问题 7:在 oldboy.txt 文件的第 2 行插入文本。
sed "2i 插入文本" oldboy.txt
问题 8:取文件的第一列和最后一列内容,并打印行号。
awk '{print NR,$1,$NF}' oldgirl.txt
问题 9:过滤文件中第一列内容,匹配oldboy 的字符串,把符合的行的最后一列输出。
grep "oldboy" oldgirl.txt |awk '{print $NF}'
3.取出 Linux 中执行 ifconfig eth0 后对应的 IP 地址(只能输出 IP 地址)。
ifconfig eth0|awk -F "[ ]+" 'NR==2{print $3}'
第12章 Linux 系统权限知识及应用实践
- 简述 Linux 系统权限的 rwx-字符对应的含义?
r 可读
w 可写
x 可执行
- 无权限 - 什么是文件所属主和所属组?
属主 属于管理员用户
属组 属于哪个用户组 - 将以下权限翻译为 8 进制数字
rwxrw-r-- 764
rw------- 600
rwxr-xr-x 755
rw-r--r-- 644 - 如何修改 oldboy 文件所属用户为 sa?
chown -R sa. oldboy - 如何修改文件的权限为 rw-r-xr-x?
chmod u=rw-,g=r-x,o=r-x - 什么是 umask?作用是什么?
默认缺省权限 022 默认最大权限去减的 - 如何锁定一个文件禁止其被删除和被修改?
chattr 设置文件属性
+i 锁定文件不能删除,不能修改
-i 解锁
+a 只能追加不能删除
-a 解锁 - 简述 suid 和 sticky 分别代表什么含义,有什么功能?
suid(setuid)位通过s字符标识基本权限x位为执行某一个任务给普通用户以root用户的权限
sticky(粘滞位)
第13章 Linux 系统定时任务 Crond 服务应用实践
- 什么是定时任务及其企业应用场景?
周期性的执行任务计划的软件,Linux定时任务的常用软件crond 生产频率要求高的 - 编写定时任务的格式是什么样的?
* * * * * /bin/sh (command to be executed)
分 时 日 月 周 命令路径 文件 - 每天中午十二点到一点每隔 5 分钟让系统提醒我该吃午饭了如何编写?
5 12-13 * * * /bin/sh 该吃饭了 - 当我们编写了定时任务后总提示我们收到邮件,这是什么原因?该如何解决?
定时任务没有追加到&>/dev/null - 要每天凌晨 5 点执行一个重启 tomcat 服务脚本 tomcat.sh 该如何编写定时任务,应该注意哪些?
00 5 * * * /bin/sh tomcat.sh
命令应接全路径 - 企业生产环境中,在目录中创建文件提示“no space left on device”,实际 df –h 查看并没有满, 原因可能是由哪些服务导致的?如何解决?
inode 被占满了 小文件太多 删除些不太重要的小文件 - 定时任务书写 12 个要领。
要领1:为定时任务规则加必要的注释
要领2:所有的定时任务尽量都以脚本的形式执行
要领3:在执行的Shell脚本前加上/bin/sh
要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1
要领5:在指定用户下执行相关定时任务
要领6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。
要领7:定时任务执行的脚本要存放到规范路径下
要领8:配置定时任务要规范操作过程,减少出错
要领9:定时任务脚本中程序命令及路径尽量用全路径
要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)
要领11:若脚本中调用了系统环境变量,要重新定义
要领12:出错或无法执行,就检查/var/log/cron日志
第14章 Linux 用户管理知识与应用实践
- 简述用户和组的概念,以及什么是 UID 和 GID?
UID用户的唯一身份标识
GID用户组的唯一标识 - 常见的 Linux 系统命令行解释器有哪些?
bash profile - 保存用户信息的配置文件是哪一个?
/etc/passwd - 保存用户密码信息的文件是哪一个?
/etc/shadow - 当出现命令行样式为-bash-4.2$情况下如何排查解决?
cp /etc/skel/.bash* .source ./.bash_profile ./.bashrc - 当前要创建一个名为 oldboy 的虚拟用户,不创建家目录,如何实现?
useradd -M -c "oldboy" - 分别阐述 su、sudo、visudo 命令的作用和区别?
su 切换用户
sudo 提权
visudo 编辑sudo - 添加一个用户希望这个用户只能添加和删除用户权限,改如何实现?
visudo 100g
oldboy ALL=(ALL) /usr/bin/useradd;/usr/bin/userdel
4.12
1、什么是集群?
简单地说,集群就是一堆机器做同一件事,
例如:www.jd.com提供卖东西服务这就是一件事,可能是几千台服务器,在背后运转支撑这个网站。
www.baidu.com看着就是一个搜索框,背后可能是上万台服务器。
2、为什么企业要用集群?
a.724服务,需要多台机器同时工作,互为实时备份。
b.高并发访问,需要多台服务器同时提供服务。
3.集群特点
a.数据量大、用户多
b.724持续服务
c.高并发
d.用户分布广泛,网络情况复杂
4.形象描述集群
基础优化:
1、规范目录
mkdir -p /server/tools
mkdir -p /server/scripts
2、配置所有主机域名解析
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
EOF
[root@oldboyedu ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
[root@oldboyedu ~]# ping lb01
PING lb01 (172.16.1.5) 56(84) bytes of data.
3.基础优化操作项:更新yum源信息
第一个:就近使用yum源地址,安装软件更快。
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
第二个:安装RHEL/CentOS官方源不提供的软件包
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
4、安全优化
#1、关闭selinux
sed -i 's#SELINUX=.#SELINUX=disabled#g' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
setenforce 0
getenforce
# 2、关闭firewalld防火墙服务
systemctl stop firewalld
systemctl disable firewalld
5.基础优化操作项:设置普通用户提权操作(可选优化)
# 提权oldboy可以利用sudo
useradd oldboy
echo 123456|passwd --stdin oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c
6.设置系统中文UTF8字符集
[root@oldboyedu ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
修改命令如下:
cp /etc/locale.conf /etc/locale.conf.ori
echo 'LANG="zh_CN.UTF-8"' >/etc/locale.conf
source /etc/locale.conf
echo $LANG
cp /etc/locale.conf /etc/locale.conf.ori
localectl set-locale LANG="zh_CN.UTF-8"
cat /etc/locale.conf
7.基础优化操作项:时间同步设置
# 设置系统时间同步
yum install ntpdate -y
/usr/sbin/ntpdate ntp3.aliyun.com
echo '#crond-id-001:time sync by oldboy' >>/var/spool/cron/root
echo "/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1">>/var/spool/cron/root
crontab -l
8.基础优化操作项:提升命令行操作安全性(可选优化)
# 提升命令行安全(可选配置)
echo 'export TMOUT=300' >>/etc/profile
echo 'export HISTSIZE=5' >>/etc/profile
echo 'export HISTFILESIZE=5' >>/etc/profile
tail -3 /etc/profile
. /etc/profile
9.基础优化操作项:加大文件描述符
# 实例演示:加大文件描述
echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
ulimit -SHn 65535
ulimit -n #<==命令方式查看配置结果
10.基础优化操作项:优化系统内核
cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF
sysctl -p
11.基础优化操作项:安装系统常用软件
CentOS6和CentOS7都要安装的企业运维常用基础工具包
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
CentOS7要安装的企业运维常用基础工具包
c
12.基础优化操作项:优化SSH远程连接效率
禁止root远程连接
修改默认22端口,改为52113
监听内网服务器IP
练习不动。
13.扩展优化操作项-修改yum.conf文件配置信息
保留yum安装的软件包
将/etc/yum.conf中的keepcache=0改为keepcache=1,为日后一键安装网站集群留好rpm及依赖工具包。
- 锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,
处理以上内容后把chattr、lsattr改名为oldboy,转移走,这样就安全多了。 - 清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。
- 清除多余的系统虚拟用户账号。
- 为grub引导菜单加密码(自学)。
- 禁止主机被ping(内核参数)。
- 打补丁并升级有已知漏洞的软件。
yum update
20.精简开机自启动服务
systemctl list-unit-files |grep enable|egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service"|awk '{print "systemctl disable",$1}'|bash
systemctl list-unit-files |grep enable
保留服务:
sshd|crond|sysstat|rsyslog|NetworkManager|irqbalance
企业生产最小化原则:
1、安装软件包最小化。
2、用户权限最小化。
3、目录文件权限最小化。
4、自启动服务最小化。
5、服务运行用户最小化。
[root@oldboyedu ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7072/sshd
tcp6 0 0 :::22 :::* LISTEN 7072/sshd
克隆三台:
B1-web服务器1 10.0.0.7/24 172.16.1.7/16 web01
C1-NFS存储服务器 10.0.0.31/24 172.16.1.31/16 nfs01
C2-rsync备份服务器 10.0.0.41/24 172.16.1.41/16 backup