とある仕事でメールが受信できないトラブルが発生し調査したことがあったのですが、
なぜかトラブルのある人だけ毎回通信がタイムアウトしていることがありました。
その際にメールの受信件数を把握するためメールボックス(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
こんな感じにディレクトリ毎に使用している容量が分かります。
使用量の多いディレクトリをチェックして
余分なファイルを削除する等することでディスクを空けましょう。
これで解決です。
Linux系OSをご利用になる場合
クライアント用途よりもサーバ用途でご利用になる方は多いでしょう。
そこで利用する様々なサービスではそれぞれデーモンがあるわけですが、
その起動についてはデーモンのインストール時に自動的に設定されます。
(ランレベル毎OSの起動に合わせてそのデーモンを起動するか否かですね)
人によっては必要のないサービスも立ち上がっている方は多いのではないでしょうか?
手動で毎回不要なデーモンを止めることもありでしょうが、
どうせならスマートに起動しないようにしておきたいところですよね?
今回はその方法のご紹介です。
まずは状態の確認。
chkconfigコマンドを使いましょう。
# chkconfig --list
netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
apache2 0:off 1:off 2:on 3:on 4:on 5:on 6:off
・
・
・
fam 0:off 1:off 2:off 3:off 4:off 5:off 6:off
named9 0:off 1:off 2:off 3:off 4:off 5:off 6:off
courier-imap 0:off 1:off 2:on 3:on 4:on 5:on 6:off
例えばこの中のapache2デーモンの起動をやめたいとします。
その場合
chkconfig apache2 off
とすると、次回以降のOS起動ではapache2デーモンは立ち上がらなくなります。
やっぱり元に戻したいという場合は、
chkconfig apache2 on
とすると次回以降のOS起動でデーモンが起動するようになります。
もう少し詳細に制御したい場合はランレベルを指定することでピンポイントで
ON/OFF出来ます。
chkconfig --level=2345 apache2 off
こんな感じです。
これで無駄なメモリ消費もなくなりますので、一度チューニングしてみてはいかがでしょうか?
cron という Unix/Linux系のOSで定期的な処理を実施するためのデーモンがありますが、
このコマンドを実行した結果(標準出力やエラー出力)は通常メールで通知されます。
1日毎の時刻の修正やアップデータのチェックなど
結構使う機会が多いので便利なコマンドですが、毎回毎回メールが来ると
正直ウザくなったりしますよね。
今回はこのメールを来ないようにする方法を紹介します。
通常
* * * * * command 1> /dev/nul
エラーメッセージのみメールが来るようにする
* * * * * command 1> /dev/null
絶対にメールが来ないようにする
* * * * * command >/dev/null 2>&1
アスタリスク(*)の部分は実行間隔に合わせ適時設定下さい。
(それぞれ 分 時間 日 月 曜日 です)
command は実行させる定期処理です。お使いになる処理に合わせて変更下さい。
1 は 標準出力、2 は エラー出力を表しています。
/dev/null に出力させることで出力をなかったことにします。
以上
各種デーモンのアクセス制限にinetdでtcpwrapperを使っている場合は
/etc/hosts.allow
/etc/hosts.deny
にその制限内容を書くわけですが
その内容に間違いや問題がないかどうかをチェックするためのコマンドがあります。
これにはtcp_wrappersパッケージに入っているtcpdchkコマンドを利用します。
% /usr/sbin/tcpdchk
この結果何も表示されなければOKです。
問題がある場合はここでエラーメッセージが表示されます。
tcpdchkと同じくtcp_wrappersパッケージに入っているtcpdmatchコマンドを利用します。
例) sshdへのアクセス制限を確認(192.168.1.1のみ許可しそれ以外は禁止)
/etc/hosts.allowの内容
----------------------
sshd: 192.168.1.1
----------------------
/etc/hosts.denyの内容
----------------------
ALL: ALL
----------------------
192.168.1.1が許可されていることを確認する
% /usr/sbin/tcpdmatch sshd 192.168.1.1
client: address 192.168.1.1
server: process sshd
matched: hosts.allow line 1
access: granted
accessがgrantedとなっていればアクセスが許可されていることになります。
192.168.1.2が許可されていないことを確認する
% /usr/sbin/tcpdmatch sshd 192.168.1.2
client: address 192.168.1.2
server: process sshd
matched: hosts.deny line 1
access: denied
accessがdenidとなっていればアクセスが拒否されていることになります。
inetd+tcpwrapperを使っている場合は設定したら必ず確認しましょうね。
今主流(?)のxinetdではどうやるのだろうか。。。
多分別の何かがあるのでしょうが分かっていません^^;
最近のコメント
7週 4日前
7週 4日前
2年 35週前
3年 51週前
3年 51週前