服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 如何监控 Linux 服务器状态?

如何监控 Linux 服务器状态?

2020-06-07 22:30今日头条良许Linux Linux

本文介绍的几个命令,不仅仅适用于服务器监控,也适用于我们日常情况下的开发。

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

本文介绍的几个命令,不仅仅适用于服务器监控,也适用于我们日常情况下的开发。

如何监控 Linux 服务器状态?

1. watch

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

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

  1. $ watch -n 5 date 

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

我们可以每隔 10 秒执行 who 命令,来看看都有谁在使用服务器。

  1. $ watch -n 10 who 
  2. Every 10.0s: who                             butterfly: Tue Jan 23 16:02:03 2019 
  3.  
  4. shs      :0           2019-01-23 09:45 (:0) 
  5. dory     pts/0        2019-01-23 15:50 (192.168.0.5) 
  6. alvin     pts/1        2019-01-23 16:01 (192.168.0.15) 
  7. shark    pts/3        2019-01-23 11:11 (192.168.0.27) 

如果发现系统运行很慢,我们可以调用 uptime 命令来查看系统平均负载情况。

  1. $ watch uptime 
  2. Every 2.0s: uptime                           butterfly: Tue Jan 23 16:25:48 2019 
  3.  
  4.  16:25:48 up 22 days,  4:38,  3 users,  load average: 1.15, 0.89, 1.02 

一些关键的进程肯定不能挂,否则可能会影响到业务开展,所以我们可以重复统计服务器中的所有进程数量。

  1. $ watch -n 5 'ps -ef | wc -l' 
  2. Every 5.0s: ps -ef | wc -l                   butterfly: Tue Jan 23 16:11:54 2019 
  3.  
  4. 245 

想动态知道服务器内存使用情况,可以重复执行 free 命令。

  1. $ watch -n 5 free -m 
  2. Every 5.0s: free -m                          butterfly: Tue Jan 23 16:34:09 2019 
  3.  
  4.               total        used        free      shared  buff/cache   available 
  5. Mem:           5959         776        3276          12        1906        4878 
  6. Swap:          2047           0        2047 

当然不仅仅是这些,我们还可以重复调用很多命令来对服务器一些关键参数进行监控,

2. top

使用 top 命令我们可以知道系统的很多关键参数,而且是动态更新的。默认情况下,top 监控的是系统的整体状态,如果我们只想知道某个人的使用情况,可以使用 -u 选项来指定这个人。

  1. $ top -u alvin 
  2. top - 16:14:33 up 2 days,  4:27,  3 users,  load average: 0.00, 0.01, 0.02 
  3. Tasks: 199 total,   1 running, 198 sleeping,   0 stopped,   0 zombie 
  4. %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 
  5. MiB Mem :   5959.4 total,   3277.3 free,    776.4 used,   1905.8 buff/cache 
  6. MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4878.4 avail Mem 
  7.  
  8.   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND 
  9. 23026 alvin      20   0   46340   7820   6504 S   0.0   0.1   0:00.05 systemd 
  10. 23033 alvin      20   0  149660   3140     72 S   0.0   0.1   0:00.00 (sd-pam) 
  11. 23125 alvin      20   0   63396   5100   4092 S   0.0   0.1   0:00.00 sshd 
  12. 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 命令,无需任何参数。

  1. $ ac 
  2.         total     1261.72 

如果我们想知道各个用户所使用时间,可以加上 -p 选项。

  1. $ ac -p 
  2.         shark                                5.24 
  3.         alvin                                5.52 
  4.         shs                               1251.00 
  5.         total     1261.76 

我们还可以通过加上 -d 选项来查看具体每一天用户使用服务器时间之和。

  1. $ ac -d | tail -10 
  2. Jan 11  total        0.05 
  3. Jan 12  total        1.36 
  4. Jan 13  total       16.39 
  5. Jan 15  total       55.33 
  6. Jan 16  total       38.02 
  7. Jan 17  total       28.51 
  8. Jan 19  total       48.66 
  9. Jan 20  total        1.37 
  10. Jan 22  total       23.48 
  11. Today   total        9.83 

小结

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

本文授权转载自公众号「良许Linux」。良许,世界500强外企Linux开发工程师,公众号里分享大量Linux干货,欢迎关注!

延伸 · 阅读

精彩推荐
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08