我需要solaris的文件大小警报脚本

时间:2017-01-30 07:10:19

标签: linux shell sh solaris solaris-10

file=/root/stacktrace.log
minsize=100
filesize=$(wc -c <"$file")
echo $filesize
if [ $filesize -ge $minsize ]; then
    mailx -s 'File size is more than 10MB' example@gmail.com < /dev/null
fi

以上脚本在centos中运行良好。但它不适用于solaris os。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

试试这个:

file=/root/stacktrace.log
maxsize=100
if [ -f "$file" ] && [ -n "$(find "$file" -size +"$maxsize"c)" ]; then
    mailx -s "File size is more than $maxsize" example@gmail.com < /dev/null
fi

这使用find来确定大小为$maxsize或更大,在本例中为100字节。我还需要[ -f "$file" ]来确保我们查看文件而不是目录,因此查找递归搜索无法在该目录的结构中找到足够的文件大。

BSD findGNU find(但 Solaris find)支持更好的单位而不仅仅是c用于&#34;字符&#34; (字节)。试试kMG,例如-size +"$maxsize"M-size +$((maxsize*1048576))c

(不要紧,语法高亮显得很奇怪。你可以在"$(…)" command substitution内嵌套一级双引号。)