logrotate は手動で実行すると機能しますが、cron を使用して実行すると効果はありません。

logrotate は手動で実行すると機能しますが、cron を使用して実行すると効果はありません。

これはUbuntu Server 14.04にありますが、すべてのオペレーティングシステムで動作すると思います。私はlogrotateクローンジョブとして実行しており、クローン設定はデフォルトです(logrotateにあります/etc/cron.daily)。私はログファイルを扱いにくいプログラムを実行しています。ログファイルをタッチするとプログラムは終了しませんが、何もしません。

次の設定に設定しましたが、logrotate関連スクリプトは指定されたプログラムを停止して起動する以外は何もしません。実行するとlogrotate -vf /etc/logrotate.conf正常に動作します。プログラムが終了し、すべてのログが回転され、プログラムが再起動されます。しかし、自動的に実行すると何か動作しません。朝起きてプログラムが実行中ですが、実行中にログファイルをタッチしたように何もしません。ログも回転しますが、logrotateプログラムが正しく停止/開始されないようです。このスクリプトはすべてのポイントでフルパスを使用し、何も短縮されません。

logrotateデフォルト設定(logrotatein)を使用して/etc/cron.dailyrootとして実行しますか?そうでなければ、どのようにそれを行うことができますか?これはまだ問題ですか?

ファイル固有の情報が削除された構成ファイル(該当するファイルを除く):

# 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 &

ベストアンサー1

おすすめ記事