Недостаточно места на диске... [РЕШЕНО]

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Yashalta
Сообщения: 315
Зарегистрирован: Вс май 20, 2018 9:27 am
Благодарил (а): 160 раз
Поблагодарили: 29 раз

Недостаточно места на диске... [РЕШЕНО]

Сообщение Yashalta » Вс авг 16, 2020 12:25 pm

в Ubuntu появился новый инструмент — снапы (от англ. snap)
Как по мне отличный инструмент, мне все нравится!

В MajorDomo есть скрипт который отвечает за проверку места на диске checkFreeSpace
В итоге мы имее подобное предупреждение https://ibb.co/hFQkQ0M

Скрипт checkFreeSpace

Код: Выделить всё

$max_usage=90; //%
$output=array();
exec('df',$output);
//var_dump($output);
$problems=0;
$problems_details='';
foreach($output as $line) {
 if (preg_match('/(\d+)% (\/.+)/',$line,$m))
   $proc=$m[1];
   $path=$m[2];
   if ($proc>$max_usage) {
    $problems++;
    $problems_details.="$path: $proc; ";
   }
   //echo "$path: $proc%<br/>";
}
sg("ThisComputer.SpaceProblems",$problems);
sg("ThisComputer.SpaceProblems_Details",$problems_details);

setTimeOut('checkFreeSpace','runScript("checkFreeSpace");',5*60);
Как мы видем в 3-й строке скрипт отрабатывает команду df
У меня "MD" установлен на "Ubuntu 20.04 LTS" в котором имеется приложения установленные при помощи snap
Диск заполнен всего на 5% но, "MD" предупреждает, что "Недостаточно места на диске..."

и если в терминале ввести команду df то, результат ниже. Мы видем "loop-ы" которые забиты на 100%...

Код: Выделить всё

$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev              844444        0    844444   0% /dev
tmpfs             177612     1588    176024   1% /run
/dev/sda3      241049600 11449248 228252592   5% /
tmpfs             888040        0    888040   0% /dev/shm
tmpfs               5120        4      5116   1% /run/lock
tmpfs             888040        0    888040   0% /sys/fs/cgroup
/dev/sda3      241049600 11449248 228252592   5% /home
/dev/sda3      241049600 11449248 228252592   5% /snapshots
/dev/sda3      241049600 11449248 228252592   5% /var/cache
/dev/loop4         30720    30720         0 100% /snap/snapd/8542
/dev/loop0        162304   162304         0 100% /snap/chromium/1260
/dev/loop3         73344    73344         0 100% /snap/lxd/16723
/dev/loop1         56704    56704         0 100% /snap/core18/1885
/dev/loop2         63616    63616         0 100% /snap/gtk-common-themes/1506
/dev/loop5         30720    30720         0 100% /snap/snapd/8790
tmpfs             177608        8    177600   1% /run/user/113
tmpfs             177608        4    177604   1% /run/user/1001
Если почитать man команды "df" у этой команды есть ключи!
Повторяем команду "df" но, с ключем df -x + "squashfs". Как по мне то, что "доктор" прописал!

Код: Выделить всё

$ df -x"squashfs"
Filesystem     1K-blocks     Used Available Use% Mounted on
udev              844444        0    844444   0% /dev
tmpfs             177612     1588    176024   1% /run
/dev/sda3      241049600 11449236 228252604   5% /
tmpfs             888040        0    888040   0% /dev/shm
tmpfs               5120        4      5116   1% /run/lock
tmpfs             888040        0    888040   0% /sys/fs/cgroup
/dev/sda3      241049600 11449236 228252604   5% /home
/dev/sda3      241049600 11449236 228252604   5% /snapshots
/dev/sda3      241049600 11449236 228252604   5% /var/cache
tmpfs             177608        8    177600   1% /run/user/113
tmpfs             177608        4    177604   1% /run/user/1001
Правим скрипт checkFreeSpace в 3-й строке, добавив ключ к команде

Код: Выделить всё

$max_usage=90; //%
$output=array();
#exec('df',$output);
exec('df -x"squashfs"',$output);
//var_dump($output);
$problems=0;
$problems_details='';
foreach($output as $line) {
 if (preg_match('/(\d+)% (\/.+)/',$line,$m))
   $proc=$m[1];
   $path=$m[2];
   if ($proc>$max_usage) {
    $problems++;
    $problems_details.="$path: $proc; ";
   }
   //echo "$path: $proc%<br/>";
}
sg("ThisComputer.SpaceProblems",$problems);
sg("ThisComputer.SpaceProblems_Details",$problems_details);

setTimeOut('checkFreeSpace','runScript("checkFreeSpace");',5*60);
В результате система снова станет "зеленой"!

Ну, и так же Вам пригодится скрипт, который удаляет старые "snap-ы"

Код: Выделить всё

#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu

LANG=C snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
    done
За это сообщение автора Yashalta поблагодарили (всего 4):
skysilver (Вс авг 16, 2020 1:16 pm) • homester (Вс авг 16, 2020 3:55 pm) • VooDooN (Пн авг 17, 2020 6:21 pm) • Sergey.Chek (Чт фев 29, 2024 12:55 am)
Рейтинг: 4.65%
Denis239tp
Сообщения: 62
Зарегистрирован: Пт янв 31, 2020 1:46 am
Откуда: Челябинская область
Благодарил (а): 11 раз
Поблагодарили: 10 раз

Re: Недостаточно места на диске... [РЕШЕНО]

Сообщение Denis239tp » Вт фев 28, 2023 8:57 pm

А где найти этот скрипт?
Аватара пользователя
prmres
Сообщения: 432
Зарегистрирован: Пт ноя 24, 2017 2:24 am
Откуда: оттуда
Благодарил (а): 113 раз
Поблагодарили: 123 раза

Re: Недостаточно места на диске... [РЕШЕНО]

Сообщение prmres » Чт мар 02, 2023 12:54 pm

Denis239tp писал(а):
Вт фев 28, 2023 8:57 pm
А где найти этот скрипт?
в сообщении выше??
Не только лишь все!
Nenacen
Сообщения: 1
Зарегистрирован: Вт фев 27, 2024 11:42 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Недостаточно места на диске... [РЕШЕНО]

Сообщение Nenacen » Вт фев 27, 2024 11:46 pm

Спасибо помогли
Ответить