まちゅダイアリー
2004-01-24 (土)
■ syslog が起動していなかった
cronを設定しようと思い、vcronを起動させようと思ったところ、こんなエラーが出た。
# /etc/runlevels/default/vcron start * Starting syslog-ng... parse error at 33 Parse error reading configuration file, exiting. (line 33) * Failed to start syslog-ng [ !! ] * ERROR: Problem starting needed services. * "vcron" was not started.
調べてみると12日以降syslogが起動していなかったことが判明。 "/etc/syslog-ng/syslog-ng.conf" を見てみると、色々と記述ミスがあった。
diff -u syslog-ng.conf.org syslog-ng.conf
--- syslog-ng.conf.org 2004-01-24 04:05:47.000000000 +0900
+++ syslog-ng.conf 2004-01-24 03:59:20.000000000 +0900
@@ -20,7 +20,7 @@
# By default messages are logged to tty12...
destination console_all { file("/dev/tty12"); };
-destination cron { file("var/log/cron.log"); };
+destination cron { file("/var/log/cron.log"); };
destination mail { file("/var/log/mail.log"); };
# ...if you intend to use /dev/console for programs like xconsole
@@ -30,5 +30,5 @@
log { source(src); destination(messages); };
log { source(src); destination(console_all); };
-log { source(src); destination(cron) };
-log { source(src); destination(mail) };
+log { source(src); filter(f_cron); destination(cron); };
+log { source(src); filter(f_mail); destination(mail); };
12日にsyslog-ng.confを編集した形跡がある(sudoを使っていたので判明)ので、その時に間違ったのだろうか。ああ、日記を見るとやっぱり編集していた。ちゃんと、設定を変えた後は動作確認しないとな。反省。
■ cronの設定
さて、今度こそcronを設定しようとすると、パーミッションがないとのこと。
$ crontab -l -bash: /usr/bin/crontab: Permission denied $ ls -l /usr/bin/crontab -rwsr-x--- 1 root cron 23516 Dec 28 03:16 /usr/bin/crontab
どうやら、cronグループに所属していないといけないようだ。管理者の許可なくcronは使わせないというポリシーなのかも。
さらに、Linuxだと管理者(root権限)はcrontabを使わず、 /etc にある cron.hourly、cron.daily、cron.weekly、cron.monthly ディレクトリにシェルスクリプトを配置するらしい。確かに、crontabにつらつらと書くよりも分かりやすくて確実かも。Solarisとはだいぶ違うのですね。
$ sudo gpasswd -a machu cron Adding user machu to group cron
参考
■ 時刻同期 (2)
サーバの時刻をインターネット上の時刻サーバと同期させたいと思う。 前回も挑戦したのだが、rdateではほとんどの時刻サーバから接続を拒否されてしまっていた。
調べてみると、rdateが使うプロトコルはRFC 868のTime Protocolであり、ほとんどの時刻サーバが利用しているNTPプロトコルを使うためにはntpdateが必要らしい。
Debianだとapt-getでntpdateだけを取ってこれるようだけど、Gentooだとntpdを含めてインストールしなければいけないみたい。
$ sudo emerge ntp
次に、設定ファイル (/etc/conf.d/ntp-client) に時刻サーバを追加する。
NTPCLIENT_CMD="ntpdate" NTPCLIENT_OPTS="-b ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp"
起動時にntpdateが実行されるように設定する。
sudo /sbin/rc-update add ntp-client default
このままだと、起動時にしかntpdateが実行されない(気がする)。定期的に時刻を同期するには、cronに設定するかntpdを使わないといけないのかな。とりあえず、 /etc/cron.hourly に ntpdate.cron を作成した。
#!/bin/sh /etc/init.d/ntp-client restart