Linux 服务器咱们每天打交道,特别是 Linux 工程师更是如此。为了保证服务器的安全与性能,咱们常常须要监控服务器的一些状态,以保证工做能顺利开展。安全
本文介绍的几个命令,不单单适用于服务器监控,也适用于咱们平常状况下的开发。bash
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复制代码
固然不单单是这些,咱们还能够重复调用不少命令来对服务器一些关键参数进行监控,内存
使用 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,内存),同时依然能够看到整个系统的关键参数。
若是你想知道每一个用户登陆服务器所使用的时间,你可使用 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」获取最新最全的技术资料,回复「入群」进入高手如云技术交流群。