LINUX.ORG.RU
ФорумAdmin

Небольшой скрипт


0

1

Сегодня при компиляции chromium столкнулся с неприятным моментом: закончилось место из-за /var/tmp/portage. Да, путь гентушника непрост.

Вопрос: можно ли сделать такой скрипт, который бы проверял место на диске и отправлял бы сообщение в /var/mail, например, или просто кидал общее сообщение? Проверял бы каждые полчаса или час? Это делается через cron?

можно ли сделать такой скрипт, который бы проверял место

да.

проверял бы каждые полчаса или час?

да.

Это делается через cron?

да.

zgen ★★★★★
()
Ответ на: комментарий от chinarulezzz

Вот такой набросок?

df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output
  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )
  if [ $usep -ge 90 ]; then
echo "Running out of space \"$partition ($usep%)\" on $(hostname) as on $(date)" |
     mail -s "Alert: Almost out of disk space $usep%" 
fi
done

morpheus
() автор топика

гентушники кагбе всегда держат достаточно места для сборки, не? Ну или /etc/portage/env для либры и хрома/лисы, если /var/tmp/portage в tmpfs.

alius-miles
()
Ответ на: комментарий от alius-miles

Поддерживаю /vat/tmp/portage on /dev/shm tmpfs.

Вообще в случае gentoo при активном обновлении системы нужно грамотно разделять части файловой системы (структуры).

Желательно /usr, /usr/portage, /usr/portage/distfiles, /usr/src вынести на отдельные разделы, я использую логические тома lvm. Если памяти мало то /var/tmp/portage тоже на отдельный раздел / логический том.

kostik87 ★★★★★
()

На тебе живой пример (работает с 2007 на Tru64, для которого у нас нет OVO agent'a):

# ls -l /usr/sbin/fs_check.csh
-rwxr-xr-x   1 root     system       873 Jun  3  2007 /usr/sbin/fs_check.csh

# cat /usr/sbin/fs_check.csh

#! /bin/csh

# find fs which are more than 90% filled
set d = ( `df -k | awk '$5~/%/ && $6!~/proc/ {split($5,a,"%"); if(a[1]>90) print $6"-"$5}'` )

set qq='"'
set pdf = 0
#send message to OVO (hp1) for each overfulled fs.
foreach i ($d)
        set fs = `echo $i | cut -d'-' -f1`
        set df = `echo $i | cut -d'-' -f2`
        # check a flag (don't send identical messages)
        if ( -e $fs/.opcmsg_fs ) source $fs/.opcmsg_fs
        set ndf = `echo $df | cut -d'%' -f1`
        if ($ndf > $pdf) then
                echo "set pdf = $ndf" > $fs/.opcmsg_fs
                # send mail here instead of rsh
                rsh -l axp3031 hp1 "/opt/OV/bin/OpC/opcmsg a=df o=fs msg_grp=OS msg_t=${qq}$fs is $df threshold is 90%${qq} node=axp30 severity=critical"
        endif
end

# remove flag for all FS which used less than threshold.
df -k | awk '$5~/%/ && $6!~/proc/ {split($5,a,"%"); if(a[1]<85) print $6"/.opcmsg_fs"}' | xargs rm -f

Писано кое-как, но проверенно временем.

sdio ★★★★★
()
#!/bin/bash

DAT=/mnt/data
FDAT=$(df -B M | grep $DAT | awk '{print $4}' | sed 's/M//')

if [ $FDAT -le 2000 ]; then
   echo 'места нет, осталось '$FDAT'Mb'
fi;
alius-miles
()
Ответ на: комментарий от sdio

поясню логику скрипта.

при достижении 90% или больше, посылается уведомление и в файле сохраняется текущее значение. При следующей проверке если значение не изменилось, уведомление не отправляется, если вырос процент заполнения ФС, то посылается новое сообщение и т.д.

sdio ★★★★★
()
Ответ на: комментарий от sdio
$ echo -n awk -v re="$DAT" '$0 ~ re { gsub("M",""); print $4}' |wc -c
48
$ echo -n awk '/'$DAT'/ { gsub("M",""); print $4}' |wc -c
36

в чём преимущество?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.