人に聞けない痔の悩み、これでスッキリ >>

debian3.1を使用しています。
本日このようなcron実行時のエラーメールが届きました。
どのように対応すればいいのでしょうか?

/etc/cron.daily/logrotate:
There was no data to process.
error: error running postrotate script
run-parts: /etc/cron.daily/logrotate exited with return code 1

A 回答 (1件)

こんにちは、うーん、logrotate 時に何かエラーがあったようですね。

/var/log/ 以下にあるログはローテートされていますか? cron のログを取得されているのでしたら、何かログから原因が分かるかもしれません。

とりあえず手動で実行してみるのはどうでしょう。

/etc/cron.daily/logrotate

これでエラーが出なければ「たまたま」何かエラーが怒ったと分かります(ちょっといい加減な回答ですね、すみません)。

もし logrotate に関する何かであれば、logoroate の使う日付管理ファイルが破損したのかもしれません。その場合は -f (force=強制)オプションをつけて、無理矢理ローテートさせる必要があります。

/usr/sbin/logrotate -f /etc/logrotate.conf

これでエラーが特にでなければ、問題は無い、あるいは問題は解消されることになります。

この回答への補足

/etc/cron.daily/logrotateを実行しても何もエラーが
表示されませんでした。明日のクローン結果を見てみようと思います。

補足日時:2005/08/01 13:51
    • good
    • 0
この回答へのお礼

本日のcron実行時もエラーはでませんでした。
ありがとうございました。

お礼日時:2005/08/02 23:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qlogrotateの再起動

先日、使用していたサーバの
/var/log内のデータが溢れてしまい
Syslog、cronなどが止まってしまいました。

現在は、Syslog、cronなどは再起動をかけたので動いているのですが
logrotateがされず、このままだとまたあふれてしまう可能性があります…。
(あふれる前は動いていたのですが、Syslogのデータを/var/log/ないで行っており、整理をしなかったので溢れてしまいました)

私の考えでは、cronを再起動させれば動くものだとばかり思っていたのですが
うまくいかず、どうしたらいいのか困っています。

どなたか、同じような経験をされた方、対処法をご存知の方ご教授頂けないでしょうか?
よろしくお願いします。

Aベストアンサー

lowrider_2005 さんの回答で十分と思いますが、

> 私の考えでは、cronを再起動させれば動くものだとばかり思っていた
> のですがうまくいかず、どうしたらいいのか困っています。

logrotate は設定した条件が満たされた場合にログのローテーションを行
います。ログがあふれそうで緊急にローテーションさせたいというときに
は、

# logrotate -f /etc/logrotate.conf

のように '-f' をつけて logrotate コマンドを実行すると強制的に
ローテーションします。

Q/etc/cron.daily/logrotateがエラーを起こしています。

/etc/cron.daily/logrotateがエラーを起こし、crontabが動きません。
エラーは以下のとおりですが、見かたがまったくわかりません。
どなたかご教授をお願いいたします。

error: Ignoring swatch~, because of ~ ending
error: syslog:7 lines must begin with a keyword or a filename (possibly in double quotes)
error: syslog:8 missing end of line
error: syslog:8 duplicate log entry for /var/log/messages

中のソースはこちらです。
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
"/usr/bin/logger" -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/etc/cron.daily/logrotateがエラーを起こし、crontabが動きません。
エラーは以下のとおりですが、見かたがまったくわかりません。
どなたかご教授をお願いいたします。

error: Ignoring swatch~, because of ~ ending
error: syslog:7 lines must begin with a keyword or a filename (possibly in double quotes)
error: syslog:8 missing end of line
error: syslog:8 duplicate log entry for /var/log/messages

中のソースはこちらです。
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf...続きを読む

Aベストアンサー

こんばんは。

> error: syslog:7

/etc/logrotate.d/syslogファイルの7行目でエラーが出ています。
ファイルのどこかを修正などしましたか?、確認してください。

何かの文法間違いの結果、

>error: syslog:8 missing end of line
ファイルの最後が見つからない

>error: syslog:8 duplicate log entry for /var/log/messages
/var/log/messagesの指定が重複している

など、エラーが連発してます。



"/usr/bin/logger"

これは質問文入力時のタイプミスですか?

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

Qレッドハットのバージョン確認方法

自分のサーバで使用しているREDHATのバージョン確認はどうすればいいのでしょうか?

more /etc/issue
とやっても英文しか出てきませんでした。

uname -all
でもカーネルのバージョンは出るのですが、REDHATのバージョンは出ませんでした。

Aベストアンサー

> more /etc/issue
> とやっても英文しか出てきませんでした。

その英文にはRedHatのバージョンは書いてなかったのですか?
書いていなかったとしたら、管理者により編集されている可能性
がありますね。

cat /etc/redhat-release

ではいかがでしょう?
やっぱり英文ですけど。

rpm -q redhat-release

でもいいかも

QPostfixでメールがおくれない。

こんにちは,
今Postfixでメールを送ろうと思っています。

内部へのメールと外部へのメールを送りたいのですが,

$mail user1
Subject: test
test sentence.
.
CC:
$

としても
user1のメールメッセージには送られておらず,また,

$mail user1.goo.ne.jp
Subject: test
test sentence.
.
CC:
$

としてもuser1.goo.ne.jpに届いていません。

おそらく,/var/log/maillogをみると,
PCNAME postfix/smtp[18514]: 065A92683C3: to=<user1@PCNAME>, relay=none, delay=10, status=deferred (Host or domain name not found. Name service error for name=PCNAME type=MX: Host not found, try again)

とかいてあるので,DNSサーバーとかの設定がたりないか,main.cfの設定がたりないのかと思います。

どうすればよろしいでしょうか。
初心者質問で申し訳ありません。よろしくお願いします。

こんにちは,
今Postfixでメールを送ろうと思っています。

内部へのメールと外部へのメールを送りたいのですが,

$mail user1
Subject: test
test sentence.
.
CC:
$

としても
user1のメールメッセージには送られておらず,また,

$mail user1.goo.ne.jp
Subject: test
test sentence.
.
CC:
$

としてもuser1.goo.ne.jpに届いていません。

おそらく,/var/log/maillogをみると,
PCNAME postfix/smtp[18514]: 065A92683C3: to=<user1@PCNAME>, relay=none, delay=10, status=defer...続きを読む

Aベストアンサー

>(Host or domain name not found. Name service error for name=PCNAME type=MX:
  Host not found, try again)

エラーメッセージのとおりですね。
Postfixが配送先のMXレコードを、DNSに問い合わせても解決しなかったようです。

メールアドレスの「@」の右側は、普通はドメイン名(###.jp)なので、
SMTPサーバ(Postfix、Sendmailなど)は
ドメイン名(###.jp)から、そのドメインのメールサーバ名(mail.###.jpなど)
を知る必要があります。(MX:MailExchangeの解決)

そのためSMTPサーバはDNSに問い合わせてMXレコードから送るべきメールサーバ名を得ます。
ちなみに、MXレコードが得られなかったら、###.jpをメールサーバ名と判断して
送信しようとします。


まずはPostfixの設定以前に、そのサーバで、ちゃんとDNSサーバが指定されて
名前解決できているか、など確認してください。

/etc/resolv.confファイルの見直し
digコマンドでDNSに問い合わせる
ルータ・FWなどでDNSへの問い合わせをが拒否されていないか?

など、うまく動かない原因はいくらでも思いつきます。

>(Host or domain name not found. Name service error for name=PCNAME type=MX:
  Host not found, try again)

エラーメッセージのとおりですね。
Postfixが配送先のMXレコードを、DNSに問い合わせても解決しなかったようです。

メールアドレスの「@」の右側は、普通はドメイン名(###.jp)なので、
SMTPサーバ(Postfix、Sendmailなど)は
ドメイン名(###.jp)から、そのドメインのメールサーバ名(mail.###.jpなど)
を知る必要があります。(MX:MailExchangeの解決)

そのためSMTPサー...続きを読む

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

Qコマンド終了ステータス

rsyncの終了ステータスによってその後の処理を切り替えています.

<src>
rsync -auz --delete $SDIR $DDIR

if [ $? -eq 0 ]; then

 END=`date '+%Y-%m-%d-%H-%M-%S'`
 echo "$END $1 end" >> /home/hoge/log
else

 echo "ERROR! exit status $?" >> /home/hoge/log
fi
</src>

rsyncが正常終了すればlogファイルに時間を記入して,
正常終了しなかったら,終了ステータスを記入します.

もし,rsyncが正常終了したにも関わらず,ちょうどif [ $? -eq 0 ]; thenに入るまえに
他のコマンドが異常終了したら変数$?の値が変わると思います.

かなり気にしすぎかもしれませんが,rsyncだけの終了ステータスに注目するにはどうしたらいいでしょうか?

よろしくお願いします.

Aベストアンサー

>crontabでシェルを動かしているときにkillをしてもkillコマンドの終了ステータスは入ることなくrsyncの終了ステータスをちゃんと受け取れるという理解でよろしいでしょうか?

まず他の方が書いているように、$? はそのシェルプロセスのローカル変数なので、別のプロセス(上記だと、killコマンドを投入した対話型シェルのプロセス)の影響を受けることはありません。

rsync が実行途中でkillされた場合、rsyncの終了ステータス $? は、128+(killのシグナル番号) になります。killのシグナル番号はデフォルトだと15なので、143 ですね。kill -9 とかすると、137 になります。

正確には、「rsyncは15番のシグナルでkillされた」ということがrsyncを呼び出したシェルプロセス(bashとかshとか)に返るので、シェルが+128して、$? にセットして通常の終了(プログラムが自分で狩猟ステータスを指定して終了した)場合と区別できるようにしてます。
あと、126と127もシェルによって予約されたステータスです。
つまり、
・ ?$ が 0~125 → プログラムが終了コードを指定して終了した(Cだとexit(cc);とか return cc;とか)
・ ?$ が 126 → コマンドが存在するが実行に失敗した(実行権限なしなど)
・ ?$ が 127 → コマンドが存在しない(command not found)
・ ?$ が 128 → このケースはたぶん無いはず
・ ?$ が 129~ → コマンドが実行中にシグナル番号($?-128)でkillされた

>crontabでシェルを動かしているときにkillをしてもkillコマンドの終了ステータスは入ることなくrsyncの終了ステータスをちゃんと受け取れるという理解でよろしいでしょうか?

まず他の方が書いているように、$? はそのシェルプロセスのローカル変数なので、別のプロセス(上記だと、killコマンドを投入した対話型シェルのプロセス)の影響を受けることはありません。

rsync が実行途中でkillされた場合、rsyncの終了ステータス $? は、128+(killのシグナル番号) になります。killのシグナル番号はデフォルトだ...続きを読む

QNTPで同期が始まらない

こんにちは。
度々すみません、NTPの設定をしましたがどうも同期が始まりません。

「ntpdate 130.69.251.23」と手動同期は成功します。
しかしntpデーモンを起動し1時間以上放置しても同期されません。
※外部タイムサーバー参照としてます

ntp.confは下記のとおりです。
---------------------------------------------------
server 133.100.9.2 # clock.nc.fukuoka-u.ac.jp
server 130.69.251.23
driftfile /var/lib/ntp/drift
---------------------------------------------------

でntpq -pの結果は下記となります。

remote refid st t when poll reach delay offset jitter
==============================================================================
133.100.9.2 .INIT. 16 u - 64 0 0.000 0.000 4000.00
130.69.251.23 .GPS. 1 u 27 64 377 8.015 -99970. 17262.6

同期ができれば「remote」列に「*」が表示されると思っています。
何か設定が足りないでしょうか?。
尚、「/vat/log/message」をtailしてますが特にエラーは無さそうです。

よろしくお願いします。

こんにちは。
度々すみません、NTPの設定をしましたがどうも同期が始まりません。

「ntpdate 130.69.251.23」と手動同期は成功します。
しかしntpデーモンを起動し1時間以上放置しても同期されません。
※外部タイムサーバー参照としてます

ntp.confは下記のとおりです。
---------------------------------------------------
server 133.100.9.2 # clock.nc.fukuoka-u.ac.jp
server 130.69.251.23
driftfile /var/lib/ntp/drift
---------------------------------------------------

でntp...続きを読む

Aベストアンサー

#4のqaaqです。

○ntp.conf 関連
server 行に "iburst" を付けておきましょう。
server ntp.nict.jp iburst <--こんな感じになります。

ntp サーバ起動時の時刻調整の収束時間が早くなります。
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=ntp.conf&dir=jpman-5.4.0%2Fman&sect=0

○ntpdate での時刻調整
ntpdate -b -u [サーバ名] を複数回実行して、"offset の値が0.1以下"になるまで、強制的に時刻調整して下さい。

○ハードウエアclockの修正
hwclock -w コマンドでハードウエアclockを合わせます。
http://www.linux.or.jp/JM/html/util-linux/man8/hwclock.8.html

○ntpdの動作
ntpによる時刻調整は、調整幅が通常128mSと小さいので、1時間は様子をましょう。
2時間程度経過しても、時刻修正の兆候が見られない場合ハードウェアの不良も考えられます。

時刻調整の兆候としては、
・logファイルに 一時間毎に調整したメッセージが書かれる。
Jan 7 21:57:40 ntpd[91145]: offset 0.000994 sec freq -190.802 ppm error 0.000076 poll 8
・ntpq -p の出力の最初の桁に"*,+"が付く。また、reach が377になる。
% ntpq -np
remote refid st t when poll reach delay offset jitter
+192.168.0.102 GPS_NMEA(0) 2 u 3 32 377 0.926 -0.330 0.023
*192.168.0.192 GPS_NMEA(1) 2 u 10 32 377 0.747 -0.336 0.023
192.168.0.9 PPS(1) 2 u 3 32 377 0.757 6.559 0.161


○その他
・PC起動時には、システムクロックを計測してその後の動作の基準にしていますが、
CMOSバッテリ不足やハードウェアに何らかの異常があるととんでもない時刻を示すことがあります。(要修理です)
・BIOSの時計も起動時の初期時刻として使われてしまうので、ある程度合わせておいた方がいいです。

#4のqaaqです。

○ntp.conf 関連
server 行に "iburst" を付けておきましょう。
server ntp.nict.jp iburst <--こんな感じになります。

ntp サーバ起動時の時刻調整の収束時間が早くなります。
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=ntp.conf&dir=jpman-5.4.0%2Fman&sect=0

○ntpdate での時刻調整
ntpdate -b -u [サーバ名] を複数回実行して、"offset の値が0.1以下"になるまで、強制的に時刻調整して下さい。

○ハードウエアclockの修正
hwclock -w コマンドでハ...続きを読む

Qシェルスクリプトでファイル内の数値文字列を数値として扱うには

失礼します。
シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか?

str:ファイル内のテキスト(数値文字列)

res=$(( $str + 1 ))

・エラー
")syntax error: invalid arithmetic operator (error token is "


よろしくお願いします。

Aベストアンサー

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをexprに書き換えたところ
$ ./test2.sh
Using expr
09:19:00.302748000
09:19:19.259990000

exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをe...続きを読む

Qunix の exit 1, exit 0について

unixの超初心者です。
viで作るプログラムで、if 構文の中に、exit 0 とexit 1がありますが、exit 0は、正常終了。
exit 1は、異常終了と言葉では理解してますが、よくわかりません。
(1)じぶんの理解では、exit 0がif文がとりあえず終わったと、
そして、exit 1は、後にも続くかも?みたいに理解してるんですが、elseの後なので(elseがあっても入ってない時がある)。
どうでしょうか?
(2)それと これは fiの前に入れるものなんでしょうか?
最後のexit 0は fiの後に入れてるようですが?間違い?
(3)if,else,fi. if,else,fi. if,else,fiと続く場合exit 1 を入れてないif 文もありますが、どうちがうんでしょう?
(4)exit だけの場合との違いは、何なんでしょうか?
すごく混乱してます、よろしくお教えください。

Aベストアンサー

exit にあたると、その時点で処理は終了されます。
なのでIF文の分岐でExitがあれば、そこで終了。
その下のロジックは処理されません。
Exit 0 と後ろにつける数字は終了ステータスを示します。

通常は0 を正常として、1を警告、2をエラーなどにします。
これを実行元に返し、プログラムが正常に終了したかどうかの判断元にします。
例えば、2が返された場合は、システム管理者にメールを送付するなどのアラートなんかにも使われます。


人気Q&Aランキング