このスクリプトでは、指定されたメールボックスのサイズを確認するために使用しています。サイズはByteで返されます。はるかに簡単に "人間が読める"形式になります。BをKiBに変換する、MiBがbash関数を呼び出す
This質問は素晴らしいですが、古くなり始めており、私のニーズに合わせて回答を変更することができません。
持つ:
MAILBOX="/var/mail/$1
GOOD=471859200 #450MB
ACTUALSIZE=$(wc -c <"$MAILBOX")
MAILBOXDIM=$(grep "mailbox_size_limit" /etc/postfix/main.cf | awk -F" " '{print $3}')
私はKB/MB
if [ ! -f $MAILBOX ]; then
echo "Can't check the size of $MAILBOX | Size=0; Total=$MAILBOXDIM"
exit 3
else
if [ $ACTUALSIZE -lt $GOOD ]; then
echo "Size of mailbox is $ACTUALSIZE | Size=$ACTUALSIZE; Total=$MAILBOXDIM"
exit 0
fi
fi
まあの値を印刷する必要がある、コードは同じですが、はるかに長く、多かれ少なかれです。
私は
echo "Size of mailbox is convert($ACTUALSIZE) | Size=convert($ACTUALSIZE); Total=convert($MAILBOXDIM)"
のようなものを必要とするだろうと私は正しい機能に
EDIT書き込むことはできませんよ: おかげでみんなを!私は
ACTUALSIZE=$(wc -c <"$MAILBOX")
ASIZE=$(convert "$ACTUALSIZE")
echo $ASIZE
同じ結果を達成するための2つの変数を必要とする理由あなたや将来的に誰もが疑問に思っているならば、私は値を比較するためにIFを使用しているためです。 ASIZEは "450Mib"で、IFは文字を好きではありません。
GOOD=450
if [ $ACTUALSIZE -lt $GOOD ]; then
echo "Size is $ASIZE"
fi
かのawkを使用し、その後、::
ASIZE=$(convert $(wc -c <"$MAILBOX") | awk -F"MiB" '{print $1}')
if [ $ASIZE -lt $GOOD ]; then
echo "Size "$ASIZE"MiB"
fi
またはマニュアルを読む:サフィックスについて hereおよびIEC/IEC-I
のCoreutils V8。 21は 'numfmt'を追加しました。 'printf"%s \ n "" 12345678 "| numfmt --to = iec' – andlrc
これはありがとう!以前はそれを見ていなかった。私はこれもテストしようとしています! – Nihvel