第十章、日常运维(上)

10.1 使用w查看系统负载

10.2 vmstat命令

10.3 top命令

10.4 sar命令

10.5 nload命令

10.6 监控io性能

10.7 free命令

10.8 ps命令

10.9 查看网络状态

10.10 linux下抓包

10.11 Linux网络相关

10.11扩展

10.12课堂笔记

10.1 使用w查看系统负载

监控系统状态

w     #查看系统负载

第一行    当前系统时间    启动多长时间   登录几个用户    系统负载(一分钟系统负载数,五分钟系统负载数,十五分钟系统负载值)(负载正常值是8以内)

##含义:单位时间段内使用cpu活动的进程有多少个(平均值)

第二行   用户   tty   从哪里来       登陆时间

cat  /proc/cpuinfo   查看cpu核数

只看processor,如果是0,说明只有一颗逻辑cpu;如果是1,就有2颗逻辑cpu

uptime         #也能查看系统负载,不过只是w的第一行

10.2 vmstat命令

vmstat  1          #查看系统进程,一秒动态显示一次,按Ctrl+c结束

vmstat  1  5       #查看系统进程,一秒动态显示一次,显示5次自动结束

关键的几列:

r :run,表示有多少个进程处于run状态,run就是在等待使用cpu

b:block,表示被除cpu以外的资源阻断了,卡死了,处于等待的状态

swpd:如果数字在持续变化,说明你的内存不够了

si:有多少数据块从swap进入内存

so:多少数据块从内存出去到swap

bi:从磁盘里出来,进入到内存里去;从磁盘里读

bo:从磁盘里写

us:表示用户占用cpu资源百分比,不超过100%,;如果长时间大于50%,说明系统资源不够了

sy:系统本身进程服务占用资源百分比

id:cpu空闲资源百分比

ps:us+sy+id=100%

wa:类似b,表示进程等待cpu的百分比数,有多少进程在等待cpu,如果wa很大, 说明cpu不够用

10.3 top命令

top       #查看进程使用情况,动态的,三秒显示一次

主要看us(长期处于60%以上,对主机没好处)

第一行,跟w命令查看的一样

第二行  进程总数状况    总数      r状态数     休眠状态数  停止状态数     僵尸进程数(主进程被意外终止了,只留下子进程在这里)

第三行   cpu百分比   st(表示被偷走的cpu百分比)

第四行  物理内存使用情况   总内存数   剩余内存数   使用内存数    buff/cache数

第五行   交换分区使用情况

显示进程

默认情况下,按照cpu百分比排序(使用cpu多的排前面)

%CPU :使用cpu百分比

%MEM:使用内存百分比

RES:物理内存大小(单位为k字节)

COMMAND:进程所在的路径名

##按q退出,数字1显示所有核cpu使用情况(从第三行观看),大写字母M按内存使用排序,大写字母P按cpu使用排序

top -c     #显示详细的进程信息,COMMAND:进程所在的绝对路径

top -bn1    # 静态显示所有进程  (适合在写脚本的时候用)

10.4 sar命令

主要用来查看网卡流量

yum   install -y  sysstat       #安装sar命令

sar每十分钟将系统状态抓一次,放入/var/log/sa/saxx 文件内 (xx表示抓取日期)

ps: /var/log/sa/ 目录内容最多保存一个月

sar -n DEV     #网卡流量

sar -n DEV  1  10       #每隔一秒显示一次,共显示十次

IFACE:网卡名称

rxpck/s:接收到的数据包(单位为个) (数据包几千个正常,数据包上万的话就不正常了)

txpck/s:发送的数据包(单位为个)

rxkB/s:接受的数据量(大小为kB)

txkB/s:发送的数据量(大小为kB)

 

sar  -q     #查看历史sar文件 

 

sar  -q  1  10    #查看系统负载一秒一次,共10次

sar  -b    #查看磁盘读写

sar -b 1  5

sar  -f   /var/log/sa/saxx      #查看历史sar文件

sa目录会生成两种文件saxx和sarxx,

saxx是二进制的文件,不能cat,只能用 sar -f  选项去加载查看

sarxx是可以直接cat(sarxx会在saxx文件产生后一天出现)

10.5 nload命令

监控网卡流量

yum  install -y  epel-release

yum  isntall  -y nload

nload

#显示实时的动态的网卡流量

第一行   网卡名   IP地址    网卡数(按方向键可以切换其他网卡)

curr:当前值

avg:平均值

Min:最小值

Max:最大值

#一般情况买来的带宽的性能看的是出去的流量(Outgoing)

10.6 监控io性能

iostat命令也在sysstat包里面,与sar命令一样

iostat  -x   #磁盘使用情况,主要关注%util这一列

%util:表示io,有多少时间占用cpu,等待io时间比

如果数值很大,说明io不好或是io很忙,读写数值也会很大;如果只是wkb/s大,说明硬盘可能存在着问题,有些故障

yum install -y iotop

iotop      #查看磁盘io使用情况

10.7 free命令

free      #查看内存使用情况

第一行是说明

第二行是内存使用情况  内存总大小(kB)   使用内存数   空闲内存数

第三行是交换分区的使用情况

free -m    #单位为M

free  -h       #数值后面加上M

total=used+free+buff/cache

buff和cache的区别

buff:缓冲

cache:缓存

数据流向:

1、数据从磁盘读出来,先放内存里,然后交给cpu运转

磁盘-->内存(cache)-->cpu

2、cpu把数据计算完,放到内存里,最后存到磁盘里去

cpu-->内存(buffer)-->磁盘

avaliable包含free和buffer/cache剩余部分

10.8 ps命令

ps       #查看系统进程静态

ps auxps  -elf一样       #把系统所有进程全部列出来

kill  [pid]     #杀死进程

ls  -l   /proc/[pid]/          #查看进程的启动位置

stat部分说明

D:不能中断的进程

R:run状态的进程

S:sleep状态的进程

T:暂停的进程

Z:僵尸进程

<:高优先级进程

N:低优先级进程

L:内存中被锁了内存分页

s:主进程

l:多线程进程

+:前台进程

10.9 查看网络状态

netstat   #查看tcp/ip通信网络状态

netstat -lnp     #查看监听端口

 

netstat -an      #查看系统的网络连接状况

 

netstat  -lntp   #只看出tcp的,不包含socket

 

-t     #tcp

 

-u    #udp

##小技巧

netstat -an  |awk ‘/^tcp/ {++sta[$NF]} END {for(key   in sta)  print key,"\t",sta[key]}‘

##查看所有tcp握手、挥手状态的数量

established      一千以内正常

ss  -an  类似 nestat  ,但是不会显示进程的名字

10.10 linux下抓包

? 抓包工具tcpdump    #查看数据的流向

yum install -y  tcpdump

? 用法:tcpdump -nn      #第一个n表示ip,第二个n表示端口号

? tcpdump -nn -i ens33    #抓包ens33网卡

#一般情况下都是tcp的包,如果是udp的包,有可能被攻击了

? tcpdump -nn port 80      #抓包80端口的

? tcpdump -nn -i ens33  port 80     #抓包ens33网卡的80端口

? tcpdump -nn not port 22 and host 192.168.0.100

#不要22端口的,和只要192.168.0.100ip的

? tcpdump -nn -c 10 -w  /tmp/1.cap

#指定-c10个数据包,-w包存到/tmp/1.cap

#/tmp/1.cap不能用cat查看,因为内容是通信的数据可以通过tcpdump -r  /tmp/1.cap查看

? yum install -y wireshark    #安装tshark命令

? tshark -n -t a -R http.request -T fields -e 

"frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

#查看指定网卡80端口web访问情况

10.11 Linux网络相关

ifconfig    #查看网卡ip(yum install net-tools)

? ifup ens33      #开启网卡ens33

ifdown ens33    #关闭网卡ens33

 

 ifdown ens33  && ifup ens33     #重启网卡

? 设定虚拟网卡ens33:1

1、cd  /etc/sysconfig/network-scripts/

2、cp  ifcfg-ens33  ifcfg-ens33\:0

3、vim  ifcfg-ens33\:0

修改下面三个

name=ens33:0

DEVICE=ens33:0

IPADDR=

DNS1去掉,因为已经有了

4、ifdown ens33  && ifup ens33

? mii-tool ens33     #查看网卡是否连接,

? ethtool ens33      #也可以查看网卡是否连接

? hostnamectl set-hostname aminglinux   # 更改主机名CentOS6不支持该命令

修改DNS的两种方式:

1、 修改DNS配置文件/etc/resolv.conf

2、修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-网卡名

? /etc/hosts文件

192.168.133.150    www.qq123.com

#左边ip,右边域名,支持一个ip多个域名

#ping www.qq123.com时,会转到192.168.133.150 (只会在本机生效)

10.12扩展

tcp三次握手四次挥手(重点面试问到http://www.doc88.com/p-9913773324388.html

tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html

10.13课堂笔记

10.1 使用w查看系统负载

uptime   #只显示w的第一行

lscpu    #查看cpu具体信息

cat    /proc/cpuinfo  #查看cpu具体信息,

lsb_release    #查看操作系统版本

cat   /etc/issue  #查看操作系统版本

uname -r      #查看内核信息

lspci -k      #显示驱动信息

cat /proc/meminfo    #查看内存信息

10.2 vmstat命令(面试常考)

vmstat  -n  1            #每一秒显示系统负载

r列表示有多少进程在run(运行)的状态;

b代表cpu以外的资源被其他进程占用;

swpd当内存不够时数值会发生变化;

si代表有多少kb的数据从swp进入到内存中;

bi代表从磁盘中出来到内存中去,

bo代表写入的数据量数值大小代表磁盘数据的 读写频率;

 us表示用户级别的一些资源占用的cpu百分比;

 us +sy +id =100; 

wa代表等待cpu的百分比

buffer 与cache的区别常考

1、buffer是位于内存和硬盘之间,叫做缓冲;cache是位于CPU和主内存之间,叫做缓存

2、缓冲速率低于缓存

3、数据流向不同

磁盘(数据) --》 内存(起缓存作用cache) --》 cpu

cpu (数据) --》 内存(起缓冲作用buffer) --》 磁盘

10.3 top命令

top与w显示的第一行相同

第二行查看系统任务状态

第三行cpu利用率

原本是cpu(s)按e,变成cpu(0);

按M,按内存大小排序

id : idle ,表示cpu的空闲率,id越高,cpu非常空闲

wa:进程等待cpu的占用率

 

10.4 sar命令

##sar掌握网卡流量就行,其他的了解

sar -n   数字    #-n指定打印次数

sar -n DEV 1  2    #DEV表示网卡流量 ,1表示每秒显示一次,2表示打印两次

sar  -b  1    #查看硬盘,一秒显示一次

 

 

10.5 nload命令

yum install -y epel-release

yum install  -y  nload           #安装前提要有epel扩展源

nload       #动态实时显示网卡,按方向键可以查看其它网卡

 

10.6 监控io性能

iostat -x            #查看磁盘使用

#io百分比表示等待执行的进程,wkb数值很大的话说明硬盘可能有故障

-z  数字         #表示多久显示一次

iotop              #实时显示磁盘读写速率

10.7 free命令

第一列是内存的总大小,单位是kb(可以使用free -h);

第二列是使用了多少;

第三列是剩余内存数量; buff/cache(缓冲和缓存)是预分配内存的量;

avaliable是预分配和没有完的内存

total=used+free+buff/cache

10.8 ps命令

ps -ef ps -aux 类似,查看所有运行的进程

ps -C 进程名      #查看系统里是否有这个进程

kill命令加pid可以杀死进程(结束)

  • D是不能中断的进程;
  • R run状态下的进程;
  • S sleep状态下的进程;
  • T 暂停的进程;
  • Z 僵尸进程;
  • < 高优先级的进程; 
  • N 低优先级进程;
  • s 主进程;
  • l 多线程进程;
  • + 前台进程。

  进程和线程区别

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

2) 线程的划分尺度小于进程,使得多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

10.9 查看网络状态

查看端口

netstat   -anlp  |grep  80       #查看网络状态并将80端口显示,也能查端口号是否被占用

 

10.10 linux下抓包

tcpdump  -nn      #表示用数字显示ip地址的端口号;用来看数据的流向

-i   + 网卡设备

port + 端口号

-w   +文件     # 将抓的数据写到指定文件

 

ps:抓到的数据只能通过tcpdump  -r  进行查看,其他的查看如cat只会看到乱码

yum install -y wireshark   #安装tshark

tshark命令可查看指定网卡80端口web的访问情况;类似于web的访问日志

 

10.11 Linux网络相关

ethtool   +网卡名     #查看网线是否连接

 

ifdown   +网卡名          #断开该网卡

修改主机名

vim  /etc/hostname

或者hostnamectl  set-hostname   主机名

修改DNS配置文件

1、vim   /etc/resolv.conf

2、vim /etc/sysconfig/network-scripts/ifcfg-网卡名

如果桥接情况下ping网关ping的通,ping外网ping不通,可以查看/etc/resolv.conf是否存在dns

扩展

tcp三次握手四次挥手(重点面试常问

连接三次握手

  1. TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态;
  2. TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。
  3. TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。
  4. TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。
  5. 当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。

断开四次挥手

  1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接收。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2?MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

原文地址:https://www.cnblogs.com/Lucky-LGX/p/9533457.html

时间: 2024-11-14 13:16:13

第十章、日常运维(上)的相关文章

日常运维工作中如何确保你的linux操作系统安全

在现在这个世道中,Linux操作系统的安全是十分重要的.但是,你得知道怎么干.一个简单反恶意程序软件是远远不够的,你需要采取其它措施来协同工作.下面是日常运维工作中常用的几种Linux安全的策略方法. 1. 使用SELinux SELinux是用来对Linux进行安全加固的,有了它,用户和管理员们就可以对访问控制进行更多控制.SELinux为访问控制添加了更细的颗粒度控制.与仅可以指定谁可以读.写或执行一个文件的权限不同的是,SELinux可以让你指定谁可以删除链接.只能追加.移动一个文件之类的

zookeeper 用法和日常运维

本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要点,围绕ZK的部署和运维两个方面讲一些管理员需要知道的东西.本文并非一个ZK搭建的快速入门,关于这方面,可以查看<ZooKeeper快速搭建>. 1.部署 本章节主要讲述如何部署ZooKeeper,包括以下三部分的内容: 系统环境 集群模式的配置 单机模式的配置 系统环境和集群模式配置这两节内容大

Hbase 日常运维

1.1监控Hbase运行状况 1.1.1操作系统 1.1.1.1IO a.群集网络IO,磁盘IO,HDFS IO IO越大说明文件读写操作越多.当IO突然增加时,有可能:1.compact队列较大,集群正在进行大量压缩操作. 2.正在执行mapreduce作业 可以通过CDH前台查看整个集群综合的数据或进入指定机器的前台查看单台机器的数据: b.Io wait 磁盘IO对集群的影响比较大,如果io wait时间过长需检查系统或磁盘是否有异常.通常IO增加时io wait也会增加,现在FMS的机器

hadoop日常运维与升级总结

日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节点过程中的需要, 进程的关闭与启动,使用 hadoop-daemon.sh start|stop datanode/namenode/journalnode/zkfc yarn-daemon.sh start|stop nodemanager/resourcemanager 检查进程是否完成关闭:

mysql日常运维与参数调优

日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事项 加权限及注意事项 问题处理,如数据库响应慢 导数据及注意事项 数据最终形式(csv,sql文本,还是直接导入某库中) 导数据方法(mysqldump,select into outfile,) 注意事项 导出为csv格式需要file权限,并且只能数据库本地导 避免锁库锁表(mysqldump使用

MySQL 日常运维业务账号权限的控制

在MySQL数据库日常运维中,对业务子账号的权限的统一控制十分必要. 业务上基本分为读账号和写账号两种账号,所以可以整理为固定的存储过程,让数据库自动生成对应的库的账号,随机密码.以及统一的读权限,写权限.(这里没有对 host进行过多的限制.只赋给通用的192.168.% .有兴趣的同学可以在存储过程加个参数,对host 控制) delimiter // set session sql_log_bin=OFF; drop PROCEDURE IF EXISTS `usercrt` // CRE

Openstack云计算项目实施其二(安装后日常运维)

5 安装后日常运维   运维基本的操作都在控制节点上的,较为方便的方式就是在openstack 的 dashboard(仪表盘)中进行,进入 dashboard 的方式就是直接在浏览器中输入控制节点的 IP 地址.(需要注意的是浏览器选择方面最好选择火狐浏览器或则谷歌浏览器,因为相对于 IE 浏览器而言,前面两个浏览器对于 openstack 的支持性要好,使用 IE 会在打开实例控制台时无法进入,出现"No vnc...."的错误信息) 用户名和密码放在控制节点/root 下,存放在

kafka知识体系-日常运维命令

本文主要讲解kafka日常运维的命令,包括topic管理.性能测试脚本. kafka版本0.10.0,安装步骤见大数据平台搭建-kafka集群的搭建 常用脚本 如下所有的命令均基于KAFKA_HOME=/wls/oracle/kafka ,服务器列表如下: 10.20.112.59 10.20.112.64 10.20.112.65 10.20.116.129 10.20.116.175 创建topic /wls/oracle/kafka/bin/kafka-topics.sh --zookee

Linux小课堂开课了(9)-Centos7日常运维管理

Centos7日常运维管理 1,查看系统配置,进程,I/O,网卡流量使用w可以查看系统的状态,当前时间,系统启动时间,登录用户,从哪个IP登录的,系统的负载值.使用uptime查看系统的负载值使用iptop,可以具体查看哪个进行使用的I/O较多,需要安装一下[[email protected] ~]# yum -y install iotop[[email protected] ~]# iotop使用cat /proc/cpuinfo查看系统配置使用vmstat可以查看CPU,内存,虚拟磁盘,交

如何做好日常运维的安全工作

一.主动与被动发现漏洞 这里的主动是指安全工程师主动去做的事情,而被动并不是被动挨打,而是积极去获取信息,积极防御. 因为攻防之间信息不对称,很多攻击.利用方式及漏洞安全工程师不一定能第一时间获取到信息 就导致了服务器被黑,出现被上传webshell无外乎这集中情况: 使用开源程序出现高危漏洞被攻击者上传webshell,服务器配置错误导致攻击者利用运维缺陷上传webshell 程序员编写代码存在诸如sql注入.文件包含,命令执行问题被攻击者发现并利用导致被上传webshel 那是不是说作为防御