コマンド

ファイル数を数える方法

とある仕事でメールが受信できないトラブルが発生し調査したことがあったのですが、
なぜかトラブルのある人だけ毎回通信がタイムアウトしていることがありました。

その際にメールの受信件数を把握するためメールボックス(Maildir形式)内の
ファイル数を数えてみることにしました。
今回はメール件数を把握するために使っていますが汎用的に使えますので
備忘録として記録しておこうと思います。

例) /var/mail/aaa にあるファイル数を確認する場合

find /var/mail/aaa -type f | wc -l

これだけです。

findはファイルを検索するコマンドで、この出力(検索結果)をwcコマンドで受けることで
ファイル数が分かるという仕組みですね。

ちなみに、上記の方法ですとfindでファイル形式を指定していませんので全ての
ファイルが検索対象となり、純粋なメール件数だけでなく設定ファイルなども
含まれますが、それはまぁ誤差ということで^^;

# 余談ですがメールが受信できなかった人はなんと2万件もメールがありました(O_O)

ディスクの利用状況を確認する方法

はじめは十分に空きのあったはずのディスクも
いつの間にかいっぱいになって慌てたことはありませんか?
今回はこんな時のスマートな解決方法を紹介します。

まずはディスク全体の確認
これにはdfコマンドを利用します。

df -h

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda2            1012M  362M  599M  38% /
    /dev/sda1              99M   26M   69M  27% /boot
    /dev/sda7              88G  1.6G   82G   2% /home
    none                  503M     0  503M   0% /dev/shm
    /dev/sda5             9.9G  2.2G  7.3G  23% /usr
    /dev/sda6             9.9G  2.2G  7.2G  24% /var

こんな感じになって使用状態が一目で分かります。

 ここでUse%のところに注目し、100%に近づいているところが
危険領域です。(ディスクを多く使っている)

では次に、その多く使っている領域の何がディスクを圧迫させているかを調べます。

例) /usr の利用状況を調べる

du -s /usr/*/ |sort -rn

    678248  /usr/local
    390796  /usr/share
    346412  /usr/lib
    194780  /usr/src
    94332   /usr/java
    54788   /usr/bin
    15072   /usr/sbin
    14048   /usr/include
    12780   /usr/kerberos
    8768    /usr/X11R6
    3132    /usr/libexec
    4       /usr/games
    4       /usr/etc
    4       /usr/dict
    0       /usr/tmp

こんな感じにディレクトリ毎に使用している容量が分かります。

使用量の多いディレクトリをチェックして
余分なファイルを削除する等することでディスクを空けましょう。
これで解決です。

Cronの結果出力の制御方法

cron という Unix/Linux系のOSで定期的な処理を実施するためのデーモンがありますが、
このコマンドを実行した結果(標準出力やエラー出力)は通常メールで通知されます。
1日毎の時刻の修正やアップデータのチェックなど
結構使う機会が多いので便利なコマンドですが、毎回毎回メールが来ると
正直ウザくなったりしますよね。

今回はこのメールを来ないようにする方法を紹介します。

通常
 * * * * * command 1> /dev/nul

エラーメッセージのみメールが来るようにする
 * * * * * command 1> /dev/null

絶対にメールが来ないようにする
 * * * * * command >/dev/null 2>&1

アスタリスク(*)の部分は実行間隔に合わせ適時設定下さい。
(それぞれ 分 時間 日 月 曜日 です)

command は実行させる定期処理です。お使いになる処理に合わせて変更下さい。

1 は 標準出力、2 は エラー出力を表しています。
/dev/null に出力させることで出力をなかったことにします。

以上

FreeBSD inetdの再起動

FreeBSDでinetdを再起動する方法です。

通常Linux系OSですと

/etc/init.d/inet restart

もしくは

service inet restart

になりますが、FreeBSDにはこれに該当するようなものがありません。。。

ではどうやって再起動するか?
サーバ自体の再起動(shutdown -r nowなど)が一番確実ですが、
さすがに外部にサービスを提供している状態でこれは出来ませんね^^;

さてどうしたものか?
答えは簡単でした。

kill -HUP `cat /var/run/inetd.pid`

してあげればよいのです。
Linux系OSに比べ親切でない気もしますが、よしとしましょう^^;

FreeBSD portinstallでパッケージの再インストール時のTips

FreeBSDでパッケージ管理をしてくれるありがたいportsですが、
一旦インストールしたパッケージを再度オプションを変えて
インストールしたい
ときってありますよね?

例えばpostfixを再インストールするとした場合

  1. アンインストール
    pkg_deinstall mail/postfix-current
  2. 再インストール
    portinstall mail/postfix-current

という感じになるかと思いますが、このとき一度でも
インストールしたことがあるとその際のコンパイルオプションが
データベースに記憶されており勝手に同じコンパイルオプションで
インストールされてしまいます

いろいろネットで調べるも調べ方が悪いのでしょうがこれを解決させる
方法がみつかりませんT-T

あきらめかけたときついにみつかりました!

まずportsの対象パッケージまで移動

cd /usr/ports/mail/postfix-current

オプション指定をクリアするために以下のコマンドを実行

make rmconfig

これでオプションが初期状態にクリアされます!^^

ちなみにオプションだけを設定するには

make config

オプションを見るだけなら

make showconfig

が使えるようです。

コンテンツの配信