我正在写一个监控脚本。我正在一台特定的机器上运行它,并且它可以工作。它计划在多台 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
您应该做的是直接从伪文件系统获取数据,而不是依赖命令的输出。