如何监控 Linux 服务器状态?

Linux 服务器咱们每天打交道,特别是 Linux 工程师更是如此。为了保证服务器的安全与性能,咱们常常须要监控服务器的一些状态,以保证工做能顺利开展。安全

本文介绍的几个命令,不单单适用于服务器监控,也适用于咱们平常状况下的开发。bash

1. watch

watch 命令咱们的使用频率很高,它的基本做用是,按照指定频率重复执行某一条指令。使用这个命令,咱们能够重复调用一些命令来达到监控服务器的做用。服务器

默认状况下,watch 命令的执行周期是 2 秒,但咱们可使用 -n 选项来指定运行频率,好比咱们想要每隔 5 秒执行 date 命令,能够这么执行:ssh

$ watch -n 5 date复制代码

一台服务器确定有多人在用,特别是本部门的小伙伴。对于这些小伙伴有没浑水摸鱼,咱们可使用一些命令来监控他们。性能

咱们能够每隔 10 秒执行 who 命令,来看看都有谁在使用服务器。spa

$ watch -n 10 who
Every 10.0s: who                             butterfly: Tue Jan 23 16:02:03 2019
​
shs      :0           2019-01-23 09:45 (:0)
dory     pts/0        2019-01-23 15:50 (192.168.0.5)
alvin     pts/1        2019-01-23 16:01 (192.168.0.15)
shark    pts/3        2019-01-23 11:11 (192.168.0.27)复制代码

若是发现系统运行很慢,咱们能够调用 uptime 命令来查看系统平均负载状况。code

$ watch uptime
Every 2.0s: uptime                           butterfly: Tue Jan 23 16:25:48 2019
​
 16:25:48 up 22 days,  4:38,  3 users,  load average: 1.15, 0.89, 1.02复制代码

一些关键的进程确定不能挂,不然可能会影响到业务开展,因此咱们能够重复统计服务器中的全部进程数量。cdn

$ watch -n 5 'ps -ef | wc -l'
Every 5.0s: ps -ef | wc -l                   butterfly: Tue Jan 23 16:11:54 2019
​
245复制代码

想动态知道服务器内存使用状况,能够重复执行 free 命令。进程

$ watch -n 5 free -m
Every 5.0s: free -m                          butterfly: Tue Jan 23 16:34:09 2019
​
              total        used        free      shared  buff/cache   available
Mem:           5959         776        3276          12        1906        4878
Swap:          2047           0        2047复制代码

固然不单单是这些,咱们还能够重复调用不少命令来对服务器一些关键参数进行监控,内存

2. top

使用 top 命令咱们能够知道系统的不少关键参数,并且是动态更新的。默认状况下,top 监控的是系统的总体状态,若是咱们只想知道某我的的使用状况,可使用 -u 选项来指定这我的。

$ top -u alvin
top - 16:14:33 up 2 days,  4:27,  3 users,  load average: 0.00, 0.01, 0.02
Tasks: 199 total,   1 running, 198 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
MiB Mem :   5959.4 total,   3277.3 free,    776.4 used,   1905.8 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4878.4 avail Mem
​
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
23026 alvin      20   0   46340   7820   6504 S   0.0   0.1   0:00.05 systemd
23033 alvin      20   0  149660   3140     72 S   0.0   0.1   0:00.00 (sd-pam)
23125 alvin      20   0   63396   5100   4092 S   0.0   0.1   0:00.00 sshd
23128 alvin      20   0   16836   5636   4284 S   0.0   0.1   0:00.03 zsh复制代码

在这个结果里,你不单单能够看到 alvin 这个用户运行的全部的进程数,也能够看到每一个进程所消耗的系统资源(CPU,内存),同时依然能够看到整个系统的关键参数。

3. ac

若是你想知道每一个用户登陆服务器所使用的时间,你可使用 ac 命令。这个命令须要你安装acct 包(Debian)或 psacct 包(RHEL,Centos)。

若是咱们想知道全部用户登录服务器所使用的时间之和,咱们能够直接运行 ac 命令,无需任何参数。

$ ac
        total     1261.72复制代码

若是咱们想知道各个用户所使用时间,能够加上 -p 选项。

$ ac -p
        shark                                5.24
        alvin                                5.52
        shs                               1251.00
        total     1261.76复制代码

咱们还能够经过加上 -d 选项来查看具体每一天用户使用服务器时间之和。

$ ac -d | tail -10
Jan 11  total        0.05
Jan 12  total        1.36
Jan 13  total       16.39
Jan 15  total       55.33
Jan 16  total       38.02
Jan 17  total       28.51
Jan 19  total       48.66
Jan 20  total        1.37
Jan 22  total       23.48
Today   total        9.83复制代码

小结

咱们可使用不少命令来监控系统的运行状态,本文主要介绍了三个:watch 命令可让你重复执行某一条命令来监控一些参数的变化,top 命令能够查看某个用户运行的进程数以及消耗的资源,而 ac 命令则能够查看每一个用户使用服务器时间。你常常使用哪一个命令呢?欢迎留言讨论!

码字不易,若是您以为有帮助,麻烦点个赞再走呗~

-----------------

我是良许,世界500强外企 Linux 开发工程师,专业生产 Linux 干货。欢迎关注个人公众号「良许Linux」,回复「1024」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。

相关文章
相关标签/搜索