Linux系统管理技巧
一.监控系统的状态
- 使用w命令查看当前系统的负载 ,例如:
# w
22:00:03 up 5 min, 1 user, load average: 0.01, 0.07, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/O 192.168.0.105 21:46 2.00s 0.15s 0.00s w
第1行从左至右显示的信息依次为:时间、系统运行时间、登录用户数、平均负载。从第2行开始的所有行则是告诉我们:当前登录的用户名及其登录地址等。
第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数 值表示15分钟内系统的平均负载值。我们看第一个值,相当来说比较重要。它表示单位时间段内使用CPU的活动进程 数(在这里其实就是1分钟内),值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系。如果服务器的CPU数量为8,那么值小于8就说明当前服务器没有压力;否则你就要检查下了。查看服务器有几个CPU的方法如下所示:
#cat /proc/cpuinfo
processor : 0
vendor_id : Genuinelntel
cpu family : 4
model : 40
model name :Intel® Pentium® G620 @ 2.60GHz 2600MHz
…
/proc/cpuinfo这个文件记录了CPU的详细信息。目前市面上的服务器有很多是2颗多核CPU,这个虚拟机只有一颗物理CPU,在运行的时候只能开2台虚拟机,开3台就卡了。建议大家买电脑的时候,处理器性能和内存大小要在中端以上,否则很难带动虚拟机。
2.用vmstat命令监控系统的状态
具体用法如下:
#vmstat
procs memory —swap-- --—io---- -system-- --—–cpu—■-
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1529900 932 196488 0 0 115 5 69 101 0 1 98 0 0
命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。
procs显示进程的相关信息:
r (run):表示运行或等待CPU时间片的进程数。
b (block):表示等待资源的进程数,这个资源指的是I/O、内存等。
□memory显示内存的相关信息。
■swpd:表示切换到交换分区中的内存数量,单位为KB。
■free:表示当前空闲的内存数量,单位为KB。
■buff:表示(即将写入磁盘的)缓冲大小,单位为KB。
■cache:表示(从磁盘中读取的)缓存大小,单位为KB。
□swap显示内存的交换情况。
■si:表示由交换区写入内存的数据量,单位为
■so:表示由内存写入交换区的数据量,单位为KB。
□i:显示磁盘的使用情况。
■bi:表示从块设备读取数据的量(读磁盘),单位为KB。
■bo:表示从块设备写入数据的量(写磁盘),单位为KB。
□system显示采集间隔内发生的中断次数。
in:表示在某一时间间隔内观测到的每秒设备的中断次数。
■cs:表示每秒产生的上下文切换次数。
□cpu显示CPU的使用状态。
■US:显示用户下所花费CPU的时间百分比。
■sy:显示系统花费CPU的时间百分比。
■id:表示CPU处于空闲状态的时间百分比。
wa:表示I/O等待所占用CPU的时间百分比。
st:表示被偷走的CPU所占百分比
3.用top命令显示进程所占的系统资源
具体用法如下:
#top
top - 21:55:38 up 26 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1875748 total, 1528964 free, 148836 used, 197948 buff/cache
KiB Swap: 3905532 total, 3905532 free, 0 used. 1552740 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2274 root 20 0 145056 5180 3908 S 0.3 0.3 0:00.19 sshd
2578 root 20 0 157708 2240 1540 R 0.3 0.1 0:00.05 top
1 root 20 0 125256 3780 2384 S 0.0 0.2 0:02.60 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
…
top命令用于动态监控进程所占的系统资源,每隔3秒变一次。它的特点是把占用系统资源(CPU、 内存、磁盘I/O等)最高的进程放到最前面。
4.用sar命令监控系统状态
sar命令可以监控系统几乎所有资源的状态,比如平均负载、网卡流量、磁盘状态、内 存使用等。与其他系统状态监控工具不同,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果你的系统没有安装这个命令,请使用命令yum install -y sysstat安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件。
(1)查看网卡流量sar -n DEV
具体用法如下:
#sar -n DEV
Linux 3.10.0-514.el7.x86_64 -
21时48分20秒 LINUX RESTART
21时50分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
22时00分01秒 lo 0.00 0.00 0.00 0;00 0.00 0.00 0.00
22时00分01秒 virbrO-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
…
sar这个命令会把当天记录的网卡信息打印出来,每隔10分钟记录一次。IFACE这一列表示设备名称,r冲ck/s这一列表示每秒进入收取的包的数量,txpck/s这一列表示每秒发送出去的包的数量,rxkB/s这一列表示每秒收取的数据量(单位为KB), txkB/s这一列表示每秒发送的数据量。
如果有一天服务器丢包非常严重,那么你就应该査一下网卡流量是否存在异常。如果rxpck/s那一列的数值大于4000,或者rxkB/s那一列的数值大于5000000,很有可能是被攻击或者出现问题。
4.(2)查看历史负载sar -q
#sar -q
5.用nload命令查看网卡流量
#yum install -y epel-release; yum install -y nload
6.用free命令查看内存使用状况
#free
total used free shared buff/cache available
Mem: 1875748 181464 1287560 9116 406724 1499688
Swap: 3905532 0 3905532
ree命令可以查看当前系统的总内存大小以及使用内存的情况。
□total:内存总大小。
□used:真正使用的实际内存大小。
□free:剩余物理内存大小(没有被分配,纯剩余)。
□shared:共享内存大小,不用关注它。
buff/cache:分配给buffer和cache的内存总共有多大。
available:系统可使用内存有多大,它包含了freeo Linux系统为了让应用跑得更快,会预 先分配一部分内存(buffer/cache )给某些应用使用,虽然这部分内存并没有真正使用,但也 已经分配岀去了。然而,当另外一个服务要使用更多内存时,是可以把这部分预先分配的内 存拿来用的。
7.用ps命令查看系统进程
ps命令如同Windows的任务管理器,可以查看Linux的进程和状态,如下所示:
#ps aux
USER PID %CPU %MEM vsz RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 125256 3780 Ss 21:45 0:02 /usr/lib/system
root 2 0.0 0.0 0 0 ? S 21:45 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 21:45 0:00 [ksoftirqd/O]
root 5 0.0 0.0 0 0 ? S< 21:45 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? s 21:45 0:00 [migration/O]
root 8 0.0 0.0 0 0 ? s 21:45 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? s 21:45 0:03 [rcu_sched]
root 10 0.0 0.0 0 0 ? s 21:45 0:00 [watchdog/O]
root 11 0.0 0.0 0 0 ? s 21:45 0:00 [watchdog/1]
root 12 0.0 0.0 0 0 ? s 21:45 0:00 [migration/1]
root 13 0.0 0.0 0 0 ? s 21:45 0:00 [ksoftirqd/1]
root 17 0.0 0.0 0 0 ? s< 21:45 0:00 [khelper]
8.用netstat命令查看网络状况
#netstat
Proto Recv-Q Send-0 Local Address Foreign Address
0.0.0.0:* State LISTEN PID/Program name
1/systemd
tcp 0 0 0.0.0.0:111
tcp 0 0 192.168.0.1:53 0.0.0.0:* LISTEN 1706/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 955/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 943/cupsd
…
9.抓包工具
(1)tcpdump工具
# tcpdump -nn -i ens33
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 65535 bytes 23:06:47.812464 IP 192.168.0.105.22 > 192.168.0.1.49777: Flags [P・], seq 3474727709:3474727917, ack 1027537772, win 327, length 208 23:06:47.813695 IP 192.168.0.1.49777 > 192.168.0.105.22: Flags [.], 23:06:47.819020 IP
…
二.Linux网络相关
1用ifconfig命令查看网卡IP
#ifconfig
如果没有配置IP地址,输入命令之后不会有地址显示,此时要编辑:
#vi /etc/syconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
下面要加上IPADDR,NETMASK,GATEWAY,DNS1等。
2.查看网卡连接状态
#mii-tool eth0
eth0: negotiated lOOObaseT-FD flow-control, link ok
这里显示link ok,就说明网卡为连接状态。如果显示no link,说明网卡坏了或者没有连接网线。 另外,还有一个命令也可以查看网卡的状态——ip address。
3.更改主机名
在安装完Linux系统之后,主机默认为localhost,localdomain,使用hostname命令就可以査看Linux的主机名,如下所示:
local host.localdomain
使用hostname命令也可以更改主机名,如下所示:
#hostname master
#hostname
master
下次登录时,命令提示符[root@localhost ~]中的localhost就会更改成master,不过这样修改只是保存在内存中,如果重启,主机名还会变成改动之前的名称。
4.Linux的防火墙
(1)SELinux
SELinux是Linux的安全机制,相当于Windows的防护墙。安装完系统之后,我们要把SElinux关闭,如果不关闭,后面会有限制的措施,所以我们必须关闭,但这只是临时的,重启之后又会开启:
#setenforce 0
想要永久关闭,需要修改文件:
#cat /etc/selinux/config
#This file controls the state of SELinux on the system.
#SELINUX= can take one of these three values:
#enforcing - SELinux security policy is enforced.
#permissive - SELinux prints warnings instead of enforcing.
#disabled - No SELinux policy is loaded.
SELINUX=disabled
#SELINUXTYPE= can take one of three two values:
#targeted - Targeted processes are protected,
#minimum - Modification of targeted policy. Only selected processes are protected.
#mis - Multi Level Security protection.
SELINUXTYPE=targeted
要把第6行中SELINUX=Active改成SELINUX=Disabled,否则不能关闭。更改完该配置文件后,重启系统方可生效。可以使用getenforce命令获得当前SELinux的状态,如下所示:
#getenforce
Disabled
再次输入命令之后,我们可以看到SElinux已经关闭(Disabled)了,此时SELinux已关闭。
本文介绍Linux系统状态监控的多种方法,包括使用w、vmstat、top、sar、nload、free、ps和netstat等命令查看系统负载、内存、进程、网络状况等,同时涵盖网络配置与防火墙管理技巧。
243

被折叠的 条评论
为什么被折叠?



