這些命令在不同的 Linux 發行版上會傳回相同的輸出嗎?

這些命令在不同的 Linux 發行版上會傳回相同的輸出嗎?

我正在寫一個監控腳本。我正在一台特定的機器上運行它,並且它可以工作。它計劃在多台 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您應該做的是直接從偽文件系統獲取數據,而不是依賴命令的輸出。

相關內容