FreeBSD QandA 657
Q. ディレクトリの残り容量を自動で監視する方法はありますか。
A. cron とシェルスクリプトを使う方法があります。
ここでは 30分ごとに /varの使用容量を調べ、 90%を越えたら自動で
foo@my.domainあてにメールを出す例を説明します。
rootアカウントで以下の作業を行います。
ディレクトリを作成します。
# mkdir /root/chkdisk
以下の内容でシェルスクリプト /root/chkdisk/chk.sh を作成します。
------------------ cut here (start)----------------
#!/bin/sh
df -k | awk '$6=="/var"{ print }' | awk '$5 > "90%" { print }' \
> /root/chkdisk/alarm ;
if [ -s /root/chkdisk/alarm ]
then
cat /root/chkdisk/head > /root/chkdisk/work.txt
cat /root/chkdisk/alarm >> /root/chkdisk/work.txt
cat /root/chkdisk/work.txt | sendmail -t
rm /root/chkdisk/alarm
rm /root/chkdisk/work.txt
fi
exit 0
------------------ cut here (end)----------------
このシェルスクリプトに実行権を設定します。
# chmod +x /root/chkdisk/chk.sh
以下の内容で /root/chkdisk/head を作成します。
------------------ cut here (start)----------------
To: foo@my.domain
Subject: Check the space on /var, please.
-----
このメールは cronにより自動で発送されました。
/var の残り容量が減ってきましたので確認してください。
------------------ cut here (end)----------------
つぎに /etc/crontab を編集して次の 3行を追加します。
最後の行の意味は、30分ごとに上記で説明した chk.shを rootアカウントで
実行することです。
------------------ cut here (start)----------------
#
# check disk space on /var
*/30 * * * * root /root/chkdisk/chk.sh
------------------ cut here (end)----------------
/etc/crontabを編集すると cronを起動し直さなくても数分の内にシステムが
変更を認識します。
以上で設定が終りました。
もし、/varでなく別のディレクトリを監視したい場合は上記で作成したファイル
中の '/var' をコマンド df -k の結果の 6番目の文字列と置き換えてください。
例えば以下の例のように /home/foo を監視したいなら
'/var' を '/usr'に置き換えます。
% df -k /home/foo
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/wd0s2f 595623 361235 186739 66% /usr
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。