fix inode with os-abstracting df
This commit is contained in:
parent
90b26dc5e0
commit
8066f31409
@ -23,6 +23,8 @@ run_module() {
|
||||
check
|
||||
}
|
||||
|
||||
. ./util.sh
|
||||
|
||||
ls modules | while IFS= read -r module; do
|
||||
[ -f "modules/$module" ] || continue
|
||||
( run_module "modules/$module" )
|
||||
|
||||
@ -3,19 +3,24 @@
|
||||
THRESHOLD=90
|
||||
|
||||
name='Filesystem Usage'
|
||||
available=1
|
||||
recommend=1
|
||||
|
||||
check() {
|
||||
df -P | while IFS= read -r line; do
|
||||
case "$line" in
|
||||
Filesystem*|"") continue ;;
|
||||
/dev/loop*) continue ;;
|
||||
esac
|
||||
if df_has_inodes / >/dev/null 2>&1; then
|
||||
available=1
|
||||
else
|
||||
available=0
|
||||
fi
|
||||
|
||||
fs=$(printf '%s\n' "$line" | awk '{print $1}')
|
||||
usep=$(printf '%s\n' "$line" | awk '{print $5}' | tr -d '%')
|
||||
mountp=$(printf '%s\n' "$line" | awk '{print $6}')
|
||||
check() {
|
||||
mountpoints | while IFS= read -r mountp; do
|
||||
fs=$(df_fs "$mountp")
|
||||
usep=$(df_blocks_capacity "$mountp" | tr -d '%')
|
||||
|
||||
case "$fs" in
|
||||
tmpfs|devtmpfs|overlay|shm|udev|proc|sysfs|cgroup*|devfs|/dev/loop*)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$usep" -ge "$THRESHOLD" ] 2>/dev/null; then
|
||||
warn "$mountp" "$usep" "$fs mounted at $mountp is $usep% full"
|
||||
|
||||
@ -3,23 +3,26 @@
|
||||
THRESHOLD=90
|
||||
|
||||
name='Filesystem Inode Usage'
|
||||
available=1
|
||||
recommend=1
|
||||
|
||||
if df_has_inodes / >/dev/null 2>&1; then
|
||||
available=1
|
||||
else
|
||||
available=0
|
||||
fi
|
||||
|
||||
check() {
|
||||
df -i -P | while IFS= read -r line; do
|
||||
case "$line" in
|
||||
Filesystem*|"") continue ;;
|
||||
/dev/loop*) continue ;;
|
||||
mountpoints | while IFS= read -r mountp; do
|
||||
fs=$(df_fs "$mountp")
|
||||
usep=$(df_inodes_capacity "$mountp" | tr -d '%')
|
||||
|
||||
case "$fs" in
|
||||
tmpfs|devtmpfs|overlay|shm|udev|proc|sysfs|cgroup*|devfs|/dev/loop*)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
fs=$(printf '%s\n' "$line" | awk '{print $1}')
|
||||
use_count=$(printf '%s\n' "$line" | awk '{print $3}')
|
||||
usep=$(printf '%s\n' "$line" | awk '{print $5}' | tr -d '%')
|
||||
mountp=$(printf '%s\n' "$line" | awk '{print $6}')
|
||||
|
||||
if [ "$use_count" -eq 0 ] 2>/dev/null; then
|
||||
# likely a file system with no inodes, skip it
|
||||
if [ "$(df_has_inodes "$mountp")" -ne 1 ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
139
util.sh
Normal file
139
util.sh
Normal file
@ -0,0 +1,139 @@
|
||||
#! /bin/sh
|
||||
# posix compatible utility functions
|
||||
|
||||
mountpoints() {
|
||||
case "$(uname -s)" in
|
||||
Linux|FreeBSD)
|
||||
df -P | awk 'NR>1 {print $6}'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_fs() {
|
||||
case "$(uname -s)" in
|
||||
Linux|FreeBSD)
|
||||
df -P "$1" | awk 'NR>1 {print $1}'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# returns the size in 1K blocks
|
||||
df_blocks() {
|
||||
case "$(uname -s)" in
|
||||
Linux|FreeBSD)
|
||||
df -Pk "$1" | awk 'NR>1 {print $2}'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_blocks_used() {
|
||||
case "$(uname -s)" in
|
||||
Linux|FreeBSD)
|
||||
df -Pk "$1" | awk 'NR>1 {print $3}'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_blocks_avail() {
|
||||
case "$(uname -s)" in
|
||||
Linux|FreeBSD)
|
||||
df -Pk "$1" | awk 'NR>1 {print $4}'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_blocks_capacity() {
|
||||
case "$(uname -s)" in
|
||||
Linux|FreeBSD)
|
||||
df -Pk "$1" | awk 'NR>1 {print $5}'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_has_inodes() {
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
df -i "$1" | awk 'NR>1 { if ($5 == "-") print 0; else print 1 }'
|
||||
;;
|
||||
FreeBSD)
|
||||
df -i "$1" | awk 'NR>1 { if ($8 == "-") print 0; else print 1 }'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_inodes() {
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
df -i "$1" | awk 'NR>1 { print $2 }'
|
||||
;;
|
||||
FreeBSD)
|
||||
df -i "$1" | awk 'NR>1 { print $6+$7 }'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_inodes_used() {
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
df -i "$1" | awk 'NR>1 { print $3 }'
|
||||
;;
|
||||
FreeBSD)
|
||||
df -i "$1" | awk 'NR>1 { print $6 }'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_inodes_free() {
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
df -i "$1" | awk 'NR>1 { print $4 }'
|
||||
;;
|
||||
FreeBSD)
|
||||
df -i "$1" | awk 'NR>1 { print $7 }'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
df_inodes_capacity() {
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
df -i "$1" | awk 'NR>1 { print $5 }'
|
||||
;;
|
||||
FreeBSD)
|
||||
df -i "$1" | awk 'NR>1 { print $8 }'
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user