您的位置:首页 > 运维架构

第十章 日常运维

2018-01-22 22:09 344 查看
10.1 使用w产看系统负载



w/uptime 查看系统负载



系统时间+启动了多久+用户数+系统负载载值(1分钟+5分钟+1分钟)
系统负载载值:单位时间内使用CPU活动的线程有多少个。
<cat /proc/cpuinfo> 查看cpu,逻辑cpu的信息
TTY:若为远程登陆为pts/0--- ,本地登录为tty1-6



=============================================================
10.2 vmstat 命令
<vmstat >查看当前
<vmstat
在此n代表数字,意思是每隔n秒输出一次状态(按Ctrl+c结束命令)。
<vmstat 1> 动态每1秒更新一次
 vmstat
[m] 这里的n表示每隔n秒输出一次状态,m表示动态显示的次数;
<vmstat 1 5>动态每1秒更新一次显示5次



proc 显示进程相关信息
r:=run,表示运行中或等待cpu运行的进程数,如果该数长期大于服务器CPU个数,则说明CPU不够用了。
b: =block ,表示等待资源的进程数,如,等待I/O,内存等,这列的值如果长时间大于1,则需要关注一下。
memory 内存相关信息
swpd:表示切换到交换分区的内存量(当该数据不断变化时说明内存不足)
free:表示当前空闲的内存量
buff:缓冲大小
cache:缓存大小
swap 内存交换情况
si:=storage in,表示交换区写入到内存的数据量
so:=storage out,表示由内存写入到交换区的数据量
io 磁盘使用情况
bi:=block in,表示从块设备读取数据(写入内存)的量(即:读磁盘),单位为KB;
bo:=block out,表示(从内存读取)写入到块设备的数据(即:写磁盘),单位为KB;
注: 此处数据会直接关系到proc出的b的值。
system 显示采集间隔内发生的中断次数
in:表示在某一时间间隔中观测到的每秒设备中断数
cs:表示每秒产生的上下文切换次数
CPU 显示CPU的使用状态(us+sy+id+wa=100%)
us:表示用户资源所花费CPU的百分比(当该值长时间>50时说明CPU数量不足)
sy:表示系统资源所花费CPU的百分比
id:表示CPU处于空闲状态的百分比
wa:=wait,表示等待使用CPU的百分比(该数值大说明CPU不足)
st:表示被偷走的CPU所占百分比(该值一般为0,不用关注)
注意:需要关注的是r,b和wa这3列,io部分和bi和bo也是要经常参考的对象,如果磁盘io压力很大,这两列的数值会比较高(大于5千算高)。另外,当si和so两列的数值比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换分区中,这往往对系统性能影响极大。

=============================================================
10.3 top 命令
查看 进程使用资源情况,每3秒更新一次
<top> 会按照cpu占有率显示
<top -c > 把具体指令显示出来
<top -bn1>静态显示一次 写脚本常用
Tasks :进程情况 总+运行+休眠+停止+僵尸进程
Cpu:CPU百分比 st被偷走的cpu%
Mem:物理内存 总+剩余+使用了+buf
Swap: 交换分区
RES:物理内存大小--KiB;
数字1 可以切换多核的CPU ;
q 退出来
P 使用CPU排序
M 使用内存排序



=============================================================
10.4 sar 命令



功能非常丰富,非常复杂,成为linux系统里的瑞士×××。
<yum install -y sysstat> 安装命令支持包
<sar> 不加参数 会调用系统里保留的历史文件 /var/log/sa ,每十分钟会自动保存一次
<sar -n DEV 1 10> 每一秒钟显示一次,显示10次
数据包 大于1万就是被攻击了。



<sar -n DEV -f /var/log/sa/sa21> 查看自动保存的文件的数据,最多可以保存30天,按日期记录



<sar -q >查看系统负载 ,



<sar -b >查看磁盘



sa14 是二进制的,只能用sar -f查看。
sar14 是可以使用cat查看的。

============================================================
10.5 nload 命令
<yum install -y nload> 安装支持包
<nload> 动态显示当前流量
方向键 ->可以切换网卡
q可以退出



============================================================
10.6 监控Io性能--磁盘



(1) iostat
<iostat -x> 磁盘使用情况
<$&util> 磁盘IO等待时间,若大于50%说明太忙了读写也会大,若读写不大说明磁盘有问题了。



(2) iotop
<yum install -y iotop >安装 iotop支持包



============================================================
10.7 free命令
free 查看内存和交换分区的使用情况。
<free > 默认是kb。
<free -m> 以M显示大小。
<free -h> 以M显示并加上单位。



总=可用+已使用 +buff/cache buff:缓冲 cache:缓存
available=free+buff/cahce
数据从磁盘读出:磁盘-->内存(cache)-->cpu
数据写入磁盘:CPU-->内存(buffer)-->磁盘

===================================
10.8 PS 指令



<ps aux> 类似 <ps -elf>查看系统所有进程,是静态快照。



<ls -l /proc/581/> 581是进程的ID,查看进程在哪里启动.



ctrl+Z 可以使进入 T状态;
<ps aux |grep vmstat>



线程和进程的区别是什么呢?
1 进程里包含了线程,线程是进程的子单元
2 同一个进程下的线程全部共享相同的内存,而进程之间内存相互隔离。

===================================
10.9 查看网络状态
<netstat> 查看网络状态
<netstat -lnp> 查看监听端口 l-listen



<netstat -ltnp> 只查看tcp监听端口
<netstat -lutnp> 只查看udp和tcp监听端口
<netstat -an> 查看所有的链接 状态



<netstat -an |awk
/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}
>技巧:查看所有链接状态数据。
http://www.cnblogs.com/lixiaohui-ambition/archive/2012/12/11/2813419.html
http://www.cnblogs.com/chengmo/archive/2010/10/08/1846190.html


<ss -an> 同样查看 网络链接状态,不现实进程的名字。

===================================
10.10 linux下抓包



<yum install -y tcpdump>安装命令支持包
<tcpdump -nn -i ens33> 查看网络流向
需指定网卡名字 -nn:前面的n表示电脑名字用P显示



<tcpdump -nn port 80 and 8080> 指定查看端口号
<tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap> 抓网卡包10次并存入文件中
在另一个链接中运行<vmstat 1 > 便可抓到包
<tcpdump -r /tmp/1.cap>读出数据



<yum install -y wireshark> 安装 wireshark工具

===================================
10.11 linux网络相关



(1)<yum install net-tools> 安装ifconfig支持包
<ifup ens33> 启动网卡 指定某个网卡重启
<ifdown ens33> 关闭网卡
可以一下执行< ifdown ens33 && ifup ens33> 这样就不会断掉网络只能从虚拟机启动

(2)添加虚拟网卡ens33:0



<vi ifcfg-ens33:0>



<mii-tool ens33> 查看网卡是否连着,就是网络灯是否亮着
<ethtool -ens33> 查看网卡链接状态。



<hostnamectl set-hostname aminglinux-001> 改主机名字
<hostname> 查看主机名
<bash>修改后更新下主机名
<cat /etc/resolv.conf> DNS的配置文件
<cat /etc/hosts>



===================================
10.12 firewalld 和 netfilter



<setenforce 0>临时关闭selinux
<getenforce > 查看selinux状态
(1)关闭firewalld 开启netfilter
<yum install -y iptables-services> 安装netfilter包
<systemctl stop firewalld> 停止服务
<systemctl disable firewalld> 不让它开机启动
<systemctl enable iptables>
<systemctl start iptables>



===================================
10.13 netfilter 5表5链接
iptables 做公网与私网内部的映射







===================================
10.14 iptables语法



<iptables -nvL> 查看 iptables规则
<iptables -nvL --line-number> 查看规则并显示编号
<service iptables restart > 重启规则,将会将配置文件规则加载回来。
<cat /etc/sysconfig/iptables> 查看规则



<iptables -Z> 将计数器清零,
<iptables -F>清空规则 ,,文件中还有规则,并没有写入 需要执行保存指令
<service iptables save> 保存规则,,修改规则需要保存下否则只是在内存中生效。
<iptables -t filter -nvL> -t指定表 不加-t 默认为filter表
<iptables -P INPUT DROP > 修改默认规则INPUT为 DROP
添加/删除规则:
<iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP >
-A append加到后面去 -s 来源ip -p 指定协议 --sport 指定端口 -d 目标ip --dport 目标端口 -j 操作
<iptables -I INPUT -p tcp --dport 80 -j DROP > -I 插入 加在最前面
前面的优先级最高,优先过滤。
<iptables -D INPUT -p tcp --dport 80 -j DROP > -D 删除这条规则
<iptables -nvL --line-number > 显示规则编号
<iptables -D INPUT 1> 删除规则1



===================================
10.15 iptables filter表小案例



(1)将80端口,22端口,21端口放行,其中22端口只有指定的IP段才可以放行,其它段拒绝。
清掉规则,定默认规则,添加规则。
写一个脚本,批量执行,否则 第一个INPUT DROP 将会使远程链接断开。
(2)icmp 能ping通外网,但是不能ping通本机

===================================
10.16 iptables nat表应用(上)
10.17 iptables nat表应用(中)
10.18 iptables nat表应用(下)



添加一块网卡ens37,并设置为lan网段,
<ifconfig ens37 192.168.100.1/24 > 修改网卡ens37的IP,网段24,,重启后没了,临时的。

===================================
10.19 iptables 规则备份和恢复



(1)<service iptables save> 保存规则到 /etc/sysconfig/iptables中
(2)<iptables-save >my.ipt > 可以将规则保存到文件my.ipt中。
<iptables-restore <my.ipt> 恢复备份的规则。

===================================
10.20 firewalld的zone



(1)禁止iptables 打开firewalld
<systemctl disable iptables>
<systemctl stop iptables>
<systemctl enable firewalld>
<systemctl start firewalld>



(2)
<firewall-cmd --get-zones>查看所有的zones
默认使用 public



<firewall-cmd --get-default-zone> 查看默认的zone


===================================
10.21firewalld关于zone的操作



zone 称为 规则集合,下面包括很多服务
< firewall-cmd --set-default-zone=work>
< firewall-cmd --get-zone-of-interface=ens33>

< firewall-cmd --zone=public --add-interface=lo>
< firewall-cmd --zone=dmz --chage-interface=lo>
< firewall-cmd --zone=dmz --remove-interface=lo>

< firewall-cmd --get-active-of-zones>

===================================
10.22 firewalld关于service操作



(1)<firewall-cmd --get-services> 查看所有的服务
< firewall-cmd --get-default-zone> 查看当前的zone
<firewall-cmd --list-services> 查看当前zone下有哪些service
<firewall-cmd --zone=public --list-service> 查看默认的public的zone有哪些服务
<firewall-cmd --zone=public --add-service=http> 将http服务加到public服务下去 只是在内存增加了。
<firewall-cmd --zone=public --add-service=http --add-service-ftp> 同时添加两个规则



<firewall-cmd --zone=public --add-service=http --permanent> //更改配置文件增加
<cat /etc/firewalld/zone/public.xml> 查看public配置文件的service文件



(2)
<ls /usr/lib/firewalld/zones> zone的模板 
<ls /usr/lib/firewalld/services>service模板



操作:将ftp的默认端口改为1121,并添加到work zone下放行:
<cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/> 将模板拷贝过来
< vi /etc/firewalld/services//ftp.xml> 修改端口号1121
<cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/> 将work拷贝到zones下
< vi /etc/firewalld/zones//work.xml> 增加一行如下
<service name="ftp"/>
<firewall-cmd --reload> //重新加载
<firewall-cmd --zone=work --list-services>查看服务



Q: firewall 没有netfilter中的端口映射和转发吗? 
A:有啊  不管是firewalld还是iptables-service,其实底层用到的都是netfilter,都有INPUT OUTPUT FORWORD等链,有filter、nat等表。

===================================
10.23  Linux任务计划-cron



<cat /etc/crontab>
<crontab -e > 进入编辑任务模式 注意写的时候命令写绝对路径,尽量都加log,方便查看是否执行。
0 3 1-10 /biin/bash /usr/loaval/sbin/12.sh >/tmp/123.log 2>>123.log 每月1-10号点每天凌晨3点00分,执行将脚本记录写入123.log
<systemctl start crond.service> 启动服务
<ps aux |grep cron > 查看服务是否启动了
或使用 < systemctl status crond > active



<crontab -l >查看计划
<crontab -r > 删除计划表
<crontab -u >指定用户

10.24 chkconfig工具-系统服务管理



<chkconfig --list>列出所有服务
<ls /etc/init.d/> 查看服务的脚本



<chkconfig --level 3 network off> 关闭3级别 对应前面的0代表关机 6代表重启
<chkconfig --level 345 network off>关闭345 级别
启动时进入什么级别。
<cp /etc/init.d/network /etc/init.d/123> cp一份脚本到配置目录
<chkconfig --add 123> 将脚本123加入服务
<chkconfig --del 123> 将服务脚本123删除



===================================
10.25 systemd --系统服务管理



<systemctl list-units --all --type=service> 查看所有的与systemd相关的服务
<systemctl enable crond.service> 让服务开机启动==<systemctl enable crond>
<systemctl disable crond.service>不让服务开机启动
<systemctl status crond> 查看状态
<systemctl stop crond> 停止服务
<systemctl start crond> 启动服务
<systemctl restart crond> 重新启动服务
<systemctl is-enabled crond> 查看是否开机启动

===================================
10.26 unit介绍





<systemctl list-units >
<systemctl list-units --all >
<systemctl list-units --all --state=inactive>
<systemctl list-units --type=service>
<systemctl is-active crond.service >

===================================
10.27 target介绍



<systemctl list-unit-files --type=target> 列出所有的target
<systemctl list-dependencies multi-user.target>查看指定multi-user.target下有哪些unit
<systemctl get-default> 查看系统默认target
<systemctl set-default multi-user.target>设置默认target,它会创建一个软连接
<cat /usr/lib/systemd/system/sshd.service> 查看service属于哪个target



并不是所有的target都能设置成开机启动的吧,只有multi-user.target 和graphical.target,rescue.target才能设置成默认启动。其他的target设置成默认启动我试了无法正常启动。

===================================
10.28 rsync 工具



<rsync -av /etc/passwd /tmp/1.txt> 同步密码文件 -v :可视化 -a:包含了好几个参数
<rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt> 远程同步文件



===================================
10.29 rsync 工具常用选项(上)
10.30 rsync 工具常用选项(下)



<rsync -av /root/22/ /tmp/dest22/> 同步



<rsync -av -- exclude ".txt" /root/22/ /tmp/dest22/> 同步时过滤

===================================
10.31 rsync通过ssh同步
10.32 rsync通过服务同步(上)
10.33 rsync通过服务同步(下)



(1)通过ssh同步
<yum install -y rsync> 安装rsync支持包,本机和目标机都需要安装。
<rsync -av /etc/passwd 192.168.188.129:/tmp/aming.txt> 同步到另一台机器
也可以在目标机器上执行上面指令,将文件拉过来



<rsync -avP -e "ssh -p 22" /etc/passwd 192.168.188.129:/tmp/aming.txt> 指定端口同步
(2)通过服务方式同步 上
<yum install -y telnet > 安装telnet命令
<telnet 192.168.188.129 873> 检测端口通不
要编辑配置文件 /etc/rsyncd.conf;
启动服务rsync --daemon
rsync -avP /tmp/aming.txt 192.168.188.129::test test是模块名字
注意 :需关闭双方的iptables
<systemctl stop firewalld > 停止firewalld
再查看 <iptables -nvL> 没有规则



<cat /var/log/rsync.log> 查看同步日志





(3) 通过服务方式同步 下
<killall rsync> 杀掉所有rsync服务
<rsync --daemon> 重启服务rsync 修改端口时需要重启

10.34 linux系统日志



<less /var/log/messages> 系统总的日志



<cat /etc/logrotate.conf> 查看自动切割配置方案
<cat /etc/logrotate.d/syslog> 哪些文件会自动切割



<dmesg> 查看 与硬件相关的日志
<dmesg -C> 清掉记录
<less /var/log/dmesg> 记录系统启动的日志

<last > 查看正确的登录日志 /var/log/wtmp 调用的日志
<lastb > 查看登录失败的日志 /var/log/btmp 调用的日志
<less /var/log/secure>

10.35 screen 工具

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 日常运维