我正在寫一個監控腳本。我正在一台特定的機器上運行它,並且它可以工作。它計劃在多台 Linux 機器上運行,而不是綁定到單一發行版。
以下是我所做的指令與相關處理:
1)CPU使用率:
top -bn 2 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'
92%
93%
我記錄了這兩個值。
2)記憶體使用情況
free -m
_____total used free shared buff/cache available <br>
Mem 3791 1183 875 16 1732 2326 <br>
Swap 3071 0 3071
記錄已使用的記憶體和交換空間/總計
3)磁碟使用情況:
df
(只保留第2列和第3列,分別是1024位元區塊的總數和已使用的區塊):
1K_blocks used_blocks
27740944 1996820
1931168 0
1941352 0
1941352 16904
1941352 0
508588 151576
388272 0
我比較兩列總和以獲得總體磁碟空間。
4)正常運轉時間:
PS C:\> invoke-sshcommand -ComputerName $ip {uptime}
09:39:01 up 13 days, 21:37, 1 user, load average: 0,00, 0,01, 0,05
剪切該字串並記錄有用的資料。
無論 Linux 發行版如何,這些指令都會給出完全相同的輸出形式嗎? 更一般地說,命令+資料處理在任何發行版上仍然有效嗎?
答案1
無論 Linux 發行版如何,這些指令都會給出完全相同的輸出形式嗎?
也許吧,但你不能確定。
有數百個 Linux 發行版(發行觀察算起來有 280 個),而且您不能保證為一個腳本編寫的一個腳本能夠工作 - 或能夠工作繼續工作 - 在另一個上,特別是如果它使用一些非 POSIX 選項或標誌。
/proc
您應該做的是直接從偽文件系統獲取數據,而不是依賴命令的輸出。