logrotate는 수동으로 실행할 때 작동하지만 cron을 사용하여 실행할 때는 효과가 없습니다.

logrotate는 수동으로 실행할 때 작동하지만 cron을 사용하여 실행할 때는 효과가 없습니다.

이것은 Ubuntu Server 14.04에 있지만 모든 운영 체제에서 작동할 것이라고 생각합니다. 나는 logrotate크론 작업으로 실행 중이고 크론 설정은 기본값입니다( logrotate에 있음 /etc/cron.daily). 나는 로그 파일을 까다롭게 다루는 프로그램을 실행하고 있습니다. 로그 파일을 터치하면 프로그램이 종료되지는 않지만 아무것도 하지 않습니다.

다음 구성으로 설정 했는데 logrotate관련 스크립트는 지정된 프로그램을 중지하고 시작하는 것 외에는 아무것도 수행하지 않습니다. 실행하면 logrotate -vf /etc/logrotate.conf제대로 작동합니다. 프로그램이 종료되고 모든 로그가 회전되고 프로그램이 다시 시작됩니다. 그러나 자동으로 실행되면 뭔가 작동하지 않습니다. 아침에 일어나서 프로그램이 실행 중이지만 실행 중에 로그 파일을 터치한 것처럼 아무것도 하지 않습니다. 로그도 회전되지만 logrotate프로그램이 제대로 중지/시작되지 않는 것 같습니다. 이 스크립트는 모든 지점에서 전체 경로를 사용하며 어떤 것도 단축되지 않습니다.

logrotate기본 설정( logrotatein )을 사용하여 /etc/cron.daily루트로 실행하시겠습니까 ? 그렇지 않다면 어떻게 그렇게 할 수 있습니까? 이것이 여전히 문제입니까?

파일별 정보가 제거된 구성 파일(해당 파일 제외):

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

도움이 된다면 여기에 두 개의 스크립트가 있습니다. 프로그램이 완전히 종료되는 데 몇 초가 걸리므로 최대 절전 모드가 됩니다. wbstop.sh:

#!/bin/sh
pkill -INT -f bot.py
sleep 8

wbstart.sh:

#!/bin/sh
sleep 5
python3 /home/username/bot/bot.py &

관련 정보