これはUbuntu Server 14.04にありますが、すべてのオペレーティングシステムで動作すると思います。私はlogrotate
クローンジョブとして実行しており、クローン設定はデフォルトです(logrotate
にあります/etc/cron.daily
)。私はログファイルを扱いにくいプログラムを実行しています。ログファイルをタッチするとプログラムは終了しませんが、何もしません。
次の設定に設定しましたが、logrotate
関連スクリプトは指定されたプログラムを停止して起動する以外は何もしません。実行するとlogrotate -vf /etc/logrotate.conf
正常に動作します。プログラムが終了し、すべてのログが回転され、プログラムが再起動されます。しかし、自動的に実行すると何か動作しません。朝起きてプログラムが実行中ですが、実行中にログファイルをタッチしたように何もしません。ログも回転しますが、logrotate
プログラムが正しく停止/開始されないようです。このスクリプトはすべてのポイントでフルパスを使用し、何も短縮されません。
logrotate
デフォルト設定(logrotate
in)を使用して/etc/cron.daily
rootとして実行しますか?そうでなければ、どのようにそれを行うことができますか?これはまだ問題ですか?
ファイル固有の情報が削除された構成ファイル(該当するファイルを除く):
# see "man logrotate" for details
# rotate log files weekly
weekly
# use the syslog group by default, since this is the owning group
# of /var/log/syslog.
su root syslog
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# system-specific logs may be configured here
/home/username/.local/share/bot/bot.log {
compress
daily
nomail
rotate 14
prerotate
/home/username/botscripts/wbstop.sh
endscript
postrotate
/home/username/botscripts/wbstart.sh
endscript
}
役に立つ場合は、ここに2つのスクリプトがあります。プログラムが完全に終了するのに数秒かかり、休止状態になります。wbstop.sh
:
#!/bin/sh
pkill -INT -f bot.py
sleep 8
wbstart.sh
:
#!/bin/sh
sleep 5
python3 /home/username/bot/bot.py &