sshでリモートホストにアクセスしてsudoする処理があるスクリプトをcronに
しかけると、以下のエラーになってしまう。

sudo: sorry,you must have a tty to run sudo.


tty(端末)を持っていない状態でsudoしてるから。これは/etc/sudorsの編集で簡単に解決する。

# visudo

Defaults requiretty
↓ ↓ ↓
#Defaults requiretty
or
Defaults !requiretty


特定のユーザに対して許可したかったら以下のように。

Defaults:system_user !requiretty


別にここでいちいち書くまでもないことだが、解決してうれしかったのでメモ。

コメントは受け付けていません。
 | Posted by Le Blue | Categories: Linux |

「メール転送だったら/etc/aliasesに転送先を書いてnewaliasesコマンド実行、でいいんでしょ」
とバカのひとつ覚え状態だったが、Postfixの場合微妙に違うようだ。

メール転送機能であるaliasesは、MTA共通の/etc/aliasesとPostfix用の/etc/postfix/aliasesがある。
Postfixを利用している場合でも/etc/aliasesで問題ないようだが、一応きちんとやると
どうなるかメモしておく。ただし実際やることはsendmailの場合とほぼ同じ。

1. 以下のように、aliasの定義を/etc/postfix/main.cfに記述する。

alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases


編集後はリロードを実行。

# postfix reload


2. /etc/postfix/aliasesに転送先を記述。
以下の例はroot宛のメールを3つのアドレスに転送する。
場合によってはアドレスではなくユーザ名を記述、でも可。

root: inuyama@mail.com,inukawa@mail.com,inumura@mail.com


3. /etc/postfix/aliasesファイルをバイナリ化し、MTA(ここではPostfix)が参照できるようにする。

# postalias /etc/postfix/aliases


これにより/etc/postfix/aliases.dbが作成される。aliases.dbはMTAがメールの宛先を
書き換えるために利用されるらしい。

4. 動作中のPostfixに即時反映させるため、newaliasesを実行する。

# newaliases


5. 反映の確認。

# grep ^root /etc/postfix/aliases


2.で記述した内容が返されること。
mailコマンドでテストメールを送信。期待通りの動きにならなかったら、/var/log/maillogをチェック。

$ echo “This is a test mail.” | mail root@example.com


ちなみに、テストメールで動作確認できなかったケースでも後でちゃんとroot宛メールが
転送されてきたこともある。よくわからんがよしとした。

ここまで書いておいてアレだが、転送はユーザのホームディレクトリ直下に.forward
ファイルを作成する方法でも可能。この場合は.forwardファイルに転送先のアドレスを記述する。
転送元にもメールを残しておきたい場合はアドレス先頭に#をつける。

.forwardとaliasesの使い分けは、.forwardはどちらかというと一時的な利用に
おいて使われる、、、と教科書には書いてあるが、別に恒久的に利用してもいいだろう。
設定が複数に渡る場合などにきちんと管理したかったらaliases、かな。
(個人的見解)

コメントは受け付けていません。
 | Posted by Le Blue | Categories: Postfix |

Linuxカーネル2.6は、デフォルトでIPv6が有効となっている。
(IPv6を)利用していないのにマシン上でIPv6が有効な状態になっていると、DNS絡み
で余計な問合せを行ってしまうため、通信速度が低下する場合があるらしい。

ちなみにOSインストール時にIPv6オフを選択していると、 /etc/sysconfig/networkに
その設定が入っているが、/etc/modprobe.confでは無効化されていないものらしい。
以下コマンドを実行してIPv6の有効/無効状態を確認できる。

# lsmod | grep ipv6
ipv6モジュールが表示される→有効

# netstat -an
:ffff:で始まるIPアドレスがある→有効

# ifconfig
inet6 addrで始まる箇所がある→有効

# modprobe -c | grep net-pf-10
net-pf-10 offがヒット→無効
※ヒットしなくても無効な場合がある


それとIPv6が有効だと、LogwatchにエラーMsgが出力されることがある。
XNTPDで”…..Cannot assign requested address:1 time(s)”とか。
DNSサーバだとNamedで”network unreachable resolving….”とか。

無効化の対応
一般的には概ね以下の対処方となるようだが、ディストリやそのバージョンによって
変わってくるようで、いろいろ見てたら訳がわからなくなった・・・

/etc/modprobe.conf or /etc/modprobe.d/modprobe.distに以下を記述する。

alias net-pf-10 off
alias ipv6 off  →ディストリのVerによっては不要っぽい


/etc/sysconfig/networkに以下を記述。
が、modprobeで設定されていれば不要らしい。念のため書いておくが。

NETWORKING_IPV6=no


設定ファイル編集後、OS再起動。
ネットワークの再起動でOKとされていることがあるが、環境によっては駄目っぽい。
(OS再起動は避けたいケースもあるよね・・・)

上記の設定でNGの場合に、以下で成功した例も見つけた。
CentOS5やRedHatLinux ES5ではこうなる??

install ipv6 /sbin/modprobe -n -i ipv6


参考
↓ ↓ ↓
IPv6の停止
どうすればIPv6を無効化できるか

IPv6の無効化、意外と苦戦、、、

追記
CentOS5のケース。”alias net-pf-10 off”でも”install ipv6 /sbin/modprobe -n -i ipv6″、
どっちでもイケるみたいだ。
“NETWORKING_IPV6=no”もいらないですね。

コメントは受け付けていません。
 | Posted by Le Blue | Categories: Linux |

duはLinuxの基本的なコマンドではあるが意外と使いこなせていなかったりするので、
改めてメモしておく。

その前に、dfとduの使い分け。dfはディスクの容量を確認、duはディレクトリや
ファイル容量を確認する時に利用する。
後述するが、この辺りの認識が定まっていないと混乱することがある。

単体のduコマンドは、カレントディレクトリとそのサブディレクトリの使用量を出力する。
配下にファイルもあり両方の値を出力させたい場合は、以下のようにする。
この場合カレントディレクトリ自体の容量は出力しない。

# du ./*


カレントディレクトリで、ディレクトリ及びファイルの容量を個別に出力
(カレントディレクトリ及びサブディレクトリが対象となる)

# du -a


個人的によく使うのは、集計のみを出力する-sオプション(summarize)。
以下はカレントディレクトリの容量のみ、分かりやすい単位で出力する。

# du -sh


カレントディレクトリで、配下のディレクトリの容量を出力。
(カレントディレクトリは除外され、ファイルは含まれる)

# du -s *


カレントディレクトリの容量のみを出力(サブディレクトリを含めない)

# du -s


ルートディレクトリの名ディレクトリの容量だけ確認したい場合は以下のように。
これも使用頻度高いかも。

# du -sh /*


カレントディレクトリで、サブディレクトリの容量を値の大きい順に並び替えて出力する。
(カレントディレクトリ自体も含まれる。ファイルは含まれない)

# du | sort -nr


カレントディレクトリの容量出力を除外したかったら、以下のようにする。

# du ./* | sort -nr


カレントディレクトリで配下のディレクトリを集計後容量を、サイズが大きい順に出力。
値の出力結果は上記 “du ./* | sort -nr” と同様となる。

# du -s * | sort -nr


上記コマンドの結果表示を、上位10位までにする。

# du -s * | sort -nr | head -10


小さい順に並べるとしたらこんな感じ。でも、普通使わないだろうな・・・

# du ./* | sort -t 1 -n


-hオプションを利用すると分かりやすい単位で表示してくれてよいのだが、
sortにパイプする場合は使えないので注意。
“du -sh * “はOKでも、”du -sh * | sort -nr”は正しくソートされないのでNGとなる。

ディレクトリの容量を調べることが多いduではあるが、もちろん個別にファイルの
容量を調べる時にも使える。

# du -h /usr/local/tomcat/logs/catalina.out


ここで書くまでもないが、オプションの説明も一応。
サイズ表示指定オプション-b / k / m / hは、他のコマンドと共通のため省略。

-a ディレクトリの他にファイルについても出力する
-c すべての容量の総計を出力する
-l リンクも集計に含める
-s 引数で指定したファイルやディレクトリの総計を出力する
-D シンボリックリンクファイルは元ファイルの容量を集計する
-L 全てのシンボリックリンクをたどる
-S 個々のディレクトリでサブディレクトリを含めずに出力する
-x 違うファイルシステムは集計から除外する
※外部ボリュームがマウントされている階層は追跡しない


最後に、再びdfとduの違いにおける注意点を。
dfとduで表示結果が大幅に異なる場合がある。duでルートボリュームの容量を
確認すると余裕があるのに、dfでみると逼迫していたり。
そんな場合は、以下の例が疑わしいかもしれない。

プロセスがファイルを open したままの状態でファイルを削除しても、
プロセスが close しない限りディスクの領域を解放しない。

つまり・・・

見かけ上は消えている ( du ではカウントされない ) が、プロセスが掴んでいるため
kernel上ではまだ残っている扱いになる ( df の方でカウントされる ) ファイルがある。


http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21569&forum=10より抜粋。


これも結局、dfはディスク容量を出力するが、duはあくまでファイルの容量を出力
するものだという認識が前提にあれば納得できる。
実は今までその辺曖昧だった、、、(汗)

コメントは受け付けていません。
 | Posted by Le Blue | Categories: Linuxコマンド |

XenのドメインUの時刻設定は、何もしなければドメイン0の配下にある。
この状態だと何かと不具合があるらしいので(詳細は割愛。手抜きですみません)、
ドメインUで独立してNTPを使用できるようにする。

ドメインUの起動中に反映するにはカーネルパラメータのxen.independent_wallclockの値を1にする。
普通は恒久的に反映させたいだろうから、/etc/sysctl.confに上記設定を記述しておく。

centOSのpoolに合わせるのであれば、/etc/ntp.confで有効にする。

/etc/ntp.conf 一部抜粋

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

ちなみにデフォルトで有効なので何もしなくていいのだが、どういうわけかここが
コメントアウトされていたため設定が反映されずにハマった経験がある。
/etc/sysctl.confで設定し、ntpdも走っているが参照しているのはローカルのまま。
うーむ・・・。で、最後に確認したのが/etc/ntp.conf。

時刻同期の参照先を確認するにはntpq -p。
それらしいサーバ名(これまたいい加減な表現ですみません)の一番左側に「*」印
がついていれば、まぁOKかと。
「*」印は参照同期中のサーバを表し、「+」はいつでも参照可能かつ好ましいサーバとなる。
反映されるまで数分ほど時間がかかる様子。

コメントは受け付けていません。
 | Posted by Le Blue | Categories: Xen |