Я пишу скрипт мониторинга. Я запускаю его на определенной машине, и он работает. Планируется запустить его на нескольких машинах Linux, не привязанных к одному дистрибутиву.
Вот команды и соответствующие процедуры, которые я выполняю:
1) Загрузка ЦП:
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 (DistroWatchнасчитывается 280 из них) и вы не можете быть уверены, что скрипт, написанный для одного, будет работать - или будет работатьпродолжатьработать - на другом, особенно если он использует какую-то не-POSIX опцию или флаг.
Вместо того, чтобы полагаться на вывод команд, вам следует брать данные непосредственно из /proc
псевдофайловой системы.