問題は、サーバーへのルートアクセスが容易ではないことです。そのため、ルートなしでlogrotateを実行するのが非常に便利です。これはオンラインで記事を読んだ後に私がしたことです。
- logrotate.confとlogrotate.status 2つのファイルを含む/home/techyman/logrotateディレクトリを作成します。
- logrotate.conf に logrotate 構成ファイルを配置します。
/home/techyman/glassfish4/glassfish/domains/*/logs/*.log {
su techyman techyman
daily
copytruncate
missingok
rotate 30
compress
notifempty
dateext dateformat -%Y-%m-%d-%s
}
- クローンジョブの実行
0 1 * * * /usr/sbin/logrotate -s /home/techyman/logrotate/logrotate.status /home/techyman/logrotate/logrotate.conf
このサービスは毎日午前1時に運営されています。 1秒ごとにテストするには、* * * * *
cronジョブで実行できます。しかし、これはうまくいきません。強制的に実行すると、「状態ファイルの上部に無効な行があります」というメッセージが表示されます。それ以外の場合は何も表示されません。 application.logだけが見えます。
この問題をどのように解決できますか?私は何が間違っていましたか?
削除しましたが、notifempty
まだ動作しません。
その後、削除しましたが、su techyman techyman
まだ機能していませんでした。
最後に、これを手動で実行します。しかし、cronジョブはまだ機能していません。
/usr/sbin/logrotate -s /home/techyman/logrotate/logrotate.status
-f /home/techyman/logrotate/logrotate.conf
出力head -5 logrotate.status
logrotate state -- version 2
"/home/techyman/glassfish4/glassfish/domains/b/logs/application.log" 2023-11-19-17:46:26
"/home/techyman/glassfish4/glassfish/domains/domain1/logs/application.log" 2023-11-19-17:46:26
"/home/techyman/glassfish4/glassfish/domains/e/logs/application.log" 2023-11-19-17:46:26
"/home/techyman/glassfish4/glassfish/domains/c/logs/application.log" 2023-11-19-17:46:26
私は問題が解決されることを願ってlogrotate.confからそれを削除しましたが、daily
それでもcronでは動作しません。
答え1
このメッセージはbad top line in state file
次のことを示します。状態ファイル(このオプションで指定したファイル-s
)は存在しますが、最初の行も存在しません。
logrotate state -- version 1
または
logrotate state -- version 2
このエラーは、ファイルを直接作成した場合にtouch /home/techyman/logrotate/logrotate.status
発生します(ファイルが存在しない場合にディレクトリlogrotate
権限が許可されている場合は、最初の実行時に自動的に生成され、適切なヘッダー行が自動的に追加されます。)logrotate
このオプションを使用して一度実行すると-f
独自に問題を解決することができます。
logrotate
状態ファイルを更新すると、最初に新しいファイルが作成され、次に古い状態ファイルに名前が変更されるため、ディレクトリ権限はファイルが状態ファイルディレクトリに作成されるようにする必要があります。logrotate
それ以外の場合、ステータスファイルの更新はまったく機能しません。
また、logrotate(8)
マニュアルページで次の点に注意してください。
通常、
logrotate
毎日のクローンジョブとして実行されます。1日に数回ログを変更しません。ログ基準はログサイズに基づいておらず、logrotateが1日に数回実行される場合、または-fまたは--forceオプションが使用されない限り。
あなたの場合、logrotate.conf
このオプションはdaily
ログが1日1回だけ循環することを指定します。に変更すると、hourly
1時間ごとにログを循環させることができますが、logrotate
1時間に1回以上実行してもまだ役に立ちません。
ログを1時間に2回以上置き換えるには、すべての時間間隔オプションを削除し、代わりにオプションを指定するsize
必要があります。
またlogrotate
、毎分実行すると(特にこのオプションが有効になっている場合)、次のジョブが開始されるまで前のジョブが完了しないcompress
可能性が高くなります。これが発生しないようにするには、起動時にステータスファイルをロックします。logrotate
logrotate