文档章节

每天必用的几个小命令

是江山
 是江山
发布于 2017/08/22 16:55
字数 1445
阅读 17
收藏 0

##简介

常见工作中,计算机系统的资源主要包括CPU,内存,硬盘以及网络,过度使用这些资源将使系统陷入困境。事实上,当上述服务器系统资源中的任何一个遭遇瓶颈,都会带来服务器性能的下降,典型的症状就是系统运行迟缓。 内存负载:

  • free -m 以MB为单位显示整个系统的内存使用情况;

  • free -h 则自动选择以适合理解的容量单位显示:

  • top -c 命令用来动态查看具体进程消耗的内存空间,以及查看不同进程对于CPU、内存等资源的使用情况。

##cpu负载:

使用w查看系统负载;

默认情况下,top -c命令是以CPU使用率由高到低排序显示进程信息的,在 top 信息界面按 K 键,并输入想要终止的PID,就可以直接杀死指定进程。按M(大写)就可以按照内存占用。

  • sar命令查看当天CPU使用

  • sar -r 查看一天(每隔10分钟)内存的使用量

  • sar -b命令查看当天IO统计记录

##I/O负载:

当磁盘无法写入的时候,一般有以下可能:

  • 文件系统只读
  • 磁盘已满
  • I节点使用完

df -h查看当前已挂载的所有分区及使用情况

当df显示磁盘空间充足,但文件系统却报错自己已满,无法写入时,需要检查是否耗尽了I节点。

df -i 可以查看I节点的使用情况。

一旦遇到I节点用光的情形,有以下几种选择:

  • 删除大量文件

  • 将大量文件移动到其他的文件系统中;

  • 将大量的文件压缩成一个文件;

  • 备份当前文件系统中的所有文件,重新格式化之前的硬盘,获得更多的I节点,再将文件复制回去。

总结:

  • 怀疑 CPU 存在瓶颈,可用 sar -u 和 sar -q 等来查看;

  • 怀疑内存存在瓶颈,可用 sar -B、 sar -r 和 sar -W 等来查看;

  • 怀疑 I/O 存在瓶颈,可用 sar -b、 sar -u 和 sar -d 等来查看;

##网络负载:

1.如果是网络不通,要定位具体的问题,一般是不断尝试排除不可能故障的地方,最终定位问题根源。一般需要查看

  • 是否接入到链路

  • 是否启用了相应的网卡

  • 本地网络是否连接

  • DNS故障

  • 能否路由到目标主机

  • 远程端口是否开放

  1. 如果是网络速度慢,一般有以下几个方式定位问题源:
  • DNS是否是问题的源头

  • 查看路由过程中哪些节点是瓶颈

  • 查看带宽的使用情况

一、网络不通

一般来说当存在网络不通的故障时,访问出端和入端的信息是我们都要收集的,目的在于确定问题所在的主机或者区段。假如a不能访问c而b能够访问c,那么很明显问题出在a或a到c的网络上,而通过同一子网中的几台机器a、b可以正常访问网络,却不能访问c,那么可能是这个网络到c存在问题,或c存在问题。

定位了问题所在的主机,一般有一些步骤来逐渐缩小问题范围,最终定位问题:

链路是否连通 即检查网卡与网络是否物理连通,网线是否插好且连接可用,很多时候不能立刻到机房确定物理连接,可以用命令:

# ethtool ens33

Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

ens33是连接到故障网络的网卡; 如果 Duplex: Full被设置成了Half,可以手动将其改为全双工网络:

# ethtool -s ens33 autoneg off duplex full

使用route -n 命令查看内核路由表

route -n 以IP而不是主机名的形式显示网关等信息,一方面更快,另一方面不涉及DNS,通过route命令查看内核路由,检验具体的网卡是否连接到目标网路的路由,之后就可以尝试ping 网关,排查与网关之间的连接。

如果无法ping通网关,可能是网关限制了ICMP数据包,或者交换机设置的问题。

通常很多网络问题是DNS故障或配置不当造成的,nslookup和dig命令能够用来排查DNS问题,

使用nslookup命令查看DNS解析:

nslookup baidu.com

互谅网是通过大量路由器中继连接起来的,网络的访问就是在这些节点间一跳一跳最终到达目的地,想要查看网络连接,最直接最常用的命令是ping,ping得通,说明路由工作正常,但是如果ping不通,traceroute命令可以查看从当前主机到目标主机的全部“跳”的过程。traceroute和ping命令都是使用ICMP协议包。

使用traceroute追踪路由状况:

traceroute www.baidu.com

  1. 网卡是否工作,包括硬件和驱动:lspci,dmesg

  2. IP参数是否正确设置:ifconfig

  3. 局域网内通信是否正常:ping

  4. 路由信息是否正常:route -n

  5. DNS状态:dig, nslookup

  6. 路由节点状况与延时:traceroute

  7. 服务监听端口:netstat -lnp

  8. 防火墙:iptables, SELinux

本文转载自:http://www.okay686.cn/589

共有 人打赏支持
是江山
粉丝 4
博文 44
码字总数 24060
作品 0
苏州
运维
我想搭建一个百万级文件的文件服务器用那些技术比较好?

存储的文件主要有50K左右的图片,还有APK,大小不定几十兆的居多吧也有1,2G的大文件,数百兆的也有。现在用的Windows Server 2008 做的文件服务器想换成linux的分布式的有必要么?访问量暂时...

LittleJ
2014/07/17
9.5K
15
Linux Tar 命令压缩解压缩参数详细指南

解压 语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。 主选项: c 创建新的档案文件。如果用户想备份一...

任远
2010/11/01
0
0
Google Reader 新增全屏显示模式

Google Reader 是我每天必用的工具网站之一,大量的新闻都通过它汇聚起来,否则一个个去找会把我累趴下。 通过 F 键,你可以在 Google 阅读器中切换全屏模式或者恢复浏览模式。这是 Google R...

红薯
2010/08/31
867
3
linux常用的压缩和解压命令

tar 可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被 用来在磁带上创建档案,现在,用户可以...

宏伟的版图
2017/08/23
0
0
Linux帮助使用方法详解

首先要弄明白一点,个人认为Linux里的帮助不是为了让我们使用它学习新知识,而是帮助我们复苏记忆。 有多种方式的帮助如下: help --help 或者 -h man /usr/share/doc info help bash 内建命...

CrazyWing
2017/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
3
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
6
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
47
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部