카테고리 보관물: Server

Server

CentOS 로그 회전이 임의의 시간에 실행되는 이유는 무엇입니까?

logrotate구성 파일을 넣고 /etc/logrotate.d/일관된 시간에 로그가 회전 할 것으로 예상했습니다. 그러나, 로그 회전 시간은 무작위로 +/- 1 시간으로 보이지 않습니다.

로그 회전 시작 시간이 무작위 인 이유는 무엇이며 어떻게 변경할 수 있습니까?


정보 : 내 logrotate 구성 파일은 다음과 같습니다 …

/opt/backups/network/*.conf {
        copytruncate
        rotate 30
        daily
        create 644 root root
        dateext
        maxage 30
        missingok
        notifempty
        compress
        delaycompress
        postrotate
            ## Create symbolic links in daily/
            PATH=`/usr/bin/dirname $1`;
            FILE=`/bin/basename $1`;
            /bin/ln -s $1 $PATH/daily/$FILE
        endscript
}



답변

열쇠는에서} CentOS는이를 /etc/cron.{daily,weekly,monthly에서 스크립트를 실행하는 것으로 알고있다 anacron/etc/anacrontab설정입니다 RANDOM_DELAY당신이 기대하는 것을 수행하는 (이것은까지 지연 RANDOM_DELAY작업을 시작하기 전에 분) …

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

문제 설정 RANDOM_DELAY=0/ START_HOURS_RANGE=3수정 …

편집하다

추가로 생각한 후에 anacron일반 vixie 를 제거 하고 설치할 것입니다 cron


답변

답은 아니지만 최근에 다른 이유로 이것을 알아 내려고 시도했지만 Redhat 6, Centos 등이 cron을 실행하는 방법에 대한 문서를 찾을 수 없었습니다. 내가 리버스 엔지니어링 한 내용은 다음과 같습니다.

  1. crond 여전히 시스템 시작시 실행-모든 파일을로드합니다. /etc/cron.d
  2. /etc/cron.d/0hourly 모든 파일을 /etc/cron.hourly
  3. /etc/cron.hourly/0anacron 뛰다 anacron
  4. 아나 크론로드 /etc/anacrontab
  5. /etc/anacrontab실행 (경유 run-parts) /etc/cron.daily, /etc/cron.weekly/etc/cron.monthly

따라서 이전 버전보다 더 복잡합니다.

시간별, 주별 및 월별 항목을 다시 추가하여 /etc/crontab(이제 비어 있음) 이전 동작을 복원 anacrontab할 수 있지만 업데이트해야합니다. 향후 업데이트를 중단하거나 중단하지 않을 수 있습니다 …


답변

다른 답변은 왜, 왜 그런지에 대한 것은 아닙니다 . 그 이유 는 야간 크론 작업을 동시에 수행하여 인프라를 중단시키지 않기 때문 입니다. (공유 스토리지 또는 하나의 VM 호스트에서 실행되는 1000 대의 서버 또는 일부 네트워크 서비스에 영향을주는 야간 작업을 상상해보십시오.)

특정 로그 로테이션 작업을에서 cron.daily하드 코딩 된 시간이있는 항목으로 이동하여 시스템에서 특정 로그 로테이션에 대한이 문제를 항상 해결합니다 cron.d. 이렇게하면 시간이 실제로 중요하지 않지만 로그 순환을위한 일관된 시간 인 updatedb와 같은 서비스에 대한 엇갈린 실행을 계속 얻을 수 있습니다.

물론 특정 크기에 도달하면 모든 로그가 호스트에서 로그 서버로 전송되기를 원할 수 있습니다. 개별 노드의 파일 회전 시간은 중요하지 않습니다. 편의성 (일반적으로 파일의 꼬리를 따르는) 또는 마지막 리조트 폴백입니다. 그런 다음 줄 확실히 체계적으로 로그 서버의 회전을 설정합니다.


답변