監(jiān)控Linux服務(wù)器活動的幾個命令
 watch、top 和 ac 命令為我們監(jiān)視 Linux 服務(wù)器上的活動提供了一些十分高效的途徑。
為了在獲取系統(tǒng)活動時更加輕松,Linux 系統(tǒng)提供了一系列相關(guān)的命令。在這篇文章中,我們就一起來看看這些對我們很有幫助的命令吧。
watch 命令
watch 是一個用來輕松地重復(fù)檢測 Linux 系統(tǒng)中一系列數(shù)據(jù)命令,例如用戶活動、正在運(yùn)行進(jìn)程、登錄、內(nèi)存使用等。這個命令實(shí)際上是重復(fù)地運(yùn)行一個特定的命令,每次都會重寫之前顯示的輸出,它提供了一個比較方便的方式用以監(jiān)測在你的系統(tǒng)中發(fā)生的活動。
首先以一個基礎(chǔ)且不是特別有用的命令開始,你可以運(yùn)行 watch -n 5 date,然后你可以看到在終端中顯示了當(dāng)前的日期和時間,這些數(shù)據(jù)會每五秒更新一次。你可能已經(jīng)猜到了,-n 5 選項(xiàng)指定了運(yùn)行接下來一次命令需要等待的秒數(shù)。默認(rèn)是 2 秒。這個命令將會一直運(yùn)行并按照指定的時間更新顯示,直到你使用 ^C 停下它。
Every 5.0s: date butterfly: Wed Jan 23 15:59:14 2019Wed Jan 23 15:59:14 EST 2019
下面是一個更有趣的命令實(shí)例,你可以監(jiān)控一個在服務(wù)器中登錄用戶的列表,該列表會按照指定的時間定時更新。就像下面寫到的,這個命令會每 10 秒更新一次這個列表。登出的用戶將會從當(dāng)前顯示的列表中消失,那些新登錄的將會被添加到這個表格當(dāng)中。如果沒有用戶再登錄或者登出,這個表格跟之前顯示的將不會有任何不同。
$ watch -n 10 whoEvery 10.0s: who butterfly: Tue Jan 23 16:02:03 2019shs :0 2019-01-23 09:45 (:0)dory pts/0 2019-01-23 15:50 (192.168.0.5)nemo pts/1 2019-01-23 16:01 (192.168.0.15)shark pts/3 2019-01-23 11:11 (192.168.0.27)
如果你只是想看有多少用戶登錄進(jìn)來,可以通過 watch 調(diào)用 uptime 命令獲取用戶數(shù)和負(fù)載的平均水平,以及系統(tǒng)的工作狀況。
$ watch uptimeEvery 2.0s: uptime butterfly: Tue Jan 23 16:25:48 201916:25:48 up 22 days, 4:38, 3 users, load average: 1.15, 0.89, 1.02
如果你想使用 watch 重復(fù)一個包含了管道的命令,就需要將該命令用引號括起來,就比如下面這個每五秒顯示一次有多少進(jìn)程正在運(yùn)行的命令。
$ watch -n 5 'ps -ef | wc -l'Every 5.0s: ps -ef | wc -l butterfly: Tue Jan 23 16:11:54 2019245
要查看內(nèi)存使用,你也許會想要試一下下面的這個命令組合:
$ watch -n 5 free -mEvery 5.0s: free -m butterfly: Tue Jan 23 16:34:09 2019Every 5.0s: free -m butterfly: Tue Jan 23 16:34:09 2019total used free shared buff/cache availableMem: 5959 776 3276 12 1906 4878Swap: 2047 0 2047
你可以在 watch 后添加一些選項(xiàng)查看某個特定用戶下運(yùn)行的進(jìn)程,不過 top 為此提供了更好的選擇。
top 命令
如果你想查看某個特定用戶下的進(jìn)程,top 命令的 -u 選項(xiàng)可以很輕松地幫你達(dá)到這個目的。
$ top -u nemotop - 16:14:33 up 2 days, 4:27, 3 users, load average: 0.00, 0.01, 0.02Tasks: 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 stMiB Mem : 5959.4 total, 3277.3 free, 776.4 used, 1905.8 buff/cacheMiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 4878.4 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND23026 nemo 20 0 46340 7820 6504 S 0.0 0.1 0:00.05 systemd23033 nemo 20 0 149660 3140 72 S 0.0 0.1 0:00.00 (sd-pam)23125 nemo 20 0 63396 5100 4092 S 0.0 0.1 0:00.00 sshd23128 nemo 20 0 16836 5636 4284 S 0.0 0.1 0:00.03 zsh
你可能不僅可以看到某個用戶下的進(jìn)程,還可以查看每個進(jìn)程所占用的資源,以及系統(tǒng)總的工作狀況。
ac 命令
如果你想查看系統(tǒng)中每個用戶登錄的時長,可以使用 ac 命令。運(yùn)行該命令之前首先需要安裝 acct(Debian 等)或者 psacct(RHEL、Centos 等)包。
ac 命令有一系列的選項(xiàng),該命令從 wtmp 文件中拉取數(shù)據(jù)。這個例子展示的是最近用戶登錄的總小時數(shù)。
$ actotal 1261.72
這個命令顯示了用戶登錄的總的小時數(shù):
$ ac -pshark 5.24nemo 5.52shs 1251.00total 1261.76
這個命令顯示了每天登錄的用戶小時數(shù):
$ ac -d | tail -10Jan 11 total 0.05Jan 12 total 1.36Jan 13 total 16.39Jan 15 total 55.33Jan 16 total 38.02Jan 17 total 28.51Jan 19 total 48.66Jan 20 total 1.37Jan 22 total 23.48Today total 9.83
總結(jié)
Linux 系統(tǒng)上有很多命令可以用于檢查系統(tǒng)活動。watch 命令允許你以重復(fù)的方式運(yùn)行任何命令,并觀察輸出有何變化。top 命令是一個專注于用戶進(jìn)程的***選項(xiàng),以及允許你以動態(tài)方式查看進(jìn)程的變化,還可以使用 ac 命令檢查用戶連接到系統(tǒng)的時間。















 
 
 




 
 
 
 