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。
请帮我解决这个问题。
答案 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 find和GNU find(但不 Solaris find)支持更好的单位而不仅仅是c
用于&#34;字符&#34; (字节)。试试k
,M
或G
,例如-size +"$maxsize"M
或-size +$((maxsize*1048576))c
(不要紧,语法高亮显得很奇怪。你可以在"$(…)"
command substitution内嵌套一级双引号。)