Как перейти с Debian 8 Jessie на Debian 9 Stretch?

Ошибка заключается в том, что вы пытаетесь выбрать поля, например,

CRITICAL_LIMIT=`awk {'print $2'}`

без ввода awk ; очевидно, вы хотели echo $ line | или (в ksh bash zsh) <<< $ line , и ваш синтаксис if неверен: вам нужно (( ) ) для арифметического сравнения и кое-что еще для сравнения строк и elif вместо elseif . Другие вещи более неуклюжие, чем необходимо:

  • вы изначально исключаете только те файловые системы, строка монтирования которых включает root . Я хотел бы отслеживать использование пространства в корневой файловой системе. Однако практически все системы сегодня имеют несколько файловых систем, которые не хранятся и поэтому не имеют места для мониторинга: / proc и / sys обычно, / dev или его часть часто, иногда другие. Если вы запустите df без указания файловой системы, он сделает все значимые файловые системы за вас. Более того, вы заботитесь только о файловых системах, которые находятся в файле конфигурации, так что просто делайте это.

  • вы читаете каждую строку и (пытаетесь) неуклюже разбивать ее с помощью awk , когда читать можете сделать это бесплатно

  • вы (попробуйте) проверять, только если использование равно пороговому значению; если например'/ dev / sda5' быстро меняется с 79% до 81%, ваша логика не выдаст предупреждение для 80%. Обычно люди хотят получать предупреждения, когда использование достигает или выше порогового значения.

  • { и } в скрипте awk следует заключать в кавычки, потому что фигурные скобки являются специальными символами оболочки (по крайней мере, для большинства командных интерпретаторов) и могут дают непредвиденные и нежелательные результаты, хотя и не в ваших конкретных случаях

. И вы вообще не пытались отправить что-либо по почте, но это часто зависит от системы и среды, поэтому я оставлю это вам.

Применяя все то, что я сделал бы:

#!/bin/ksh
CONFIG_FILE=/home/oracle/files/template
<$CONFIG_FILE while read filesys warn crit; do
  used=$( df -Ph "$filesys" | awk 'NR>1 {sub(/%/,"",$5);print $5}' )
  if (($used >= $crit)); then echo critical $used% on $filesys
  elif (($used >= $warn)); then echo warning $used% on $filesys; fi
done 

В качестве альтернативы вы можете оставить % в поле 5 и использовать и проводить сравнения с усеченным значением $ {used% \%} ; это шесть против полдюжины.

4
09.01.2017, 11:59
3 ответа
echo 'deb http://httpredir.debian.org/debian/ stretch main contrib non-free
deb-src http://httpredir.debian.org/debian/ stretch main contrib non-free

deb http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://httpredir.debian.org/debian/ stretch-updates main contrib non-free

deb http://httpredir.debian.org/debian/ stretch-proposed-updates main contrib non-free
deb-src http://httpredir.debian.org/debian/ stretch-proposed-updates main contrib non-free

deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free' > /etc/apt/sources.list.d/stretch.list
-2
27.01.2020, 20:48

Обновите репозитории apt, чтобы использовать stretch вместо jessie (это можно сделать вручную с помощью текстового редактора, но sed можно использовать для автоматического обновления файла).

[user@debian-9 ~]$ sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list

Обратите внимание на : Debian 9 (Stretch) помечено как тестирование по какой-то причине. Вы можете заметить проблемы со стабильностью при его использовании.

10
27.01.2020, 20:48

В следующем посте представлены точные шаги, которые необходимо предпринять для обновления Debian 8 Jessie до Debian 9 Stretch:

https://economictheoryblog.com/2018/08/23/upgrade-debian-8-to-9/

1
27.01.2020, 20:48

Теги

Похожие вопросы