특정 cron 작업에 대한 syslog/rsyslog 로깅 건너뛰기

특정 cron 작업에 대한 syslog/rsyslog 로깅 건너뛰기

대부분의 GNU/Linux 배포판에서 기본값은 각 cron 작업(및 다양한 이벤트)의 시작을 시스템 로그에 기록하는 것입니다. 이는 매우 편리하지만 1분마다 시작하는 등 매우 빈번한 작업에는 적합하지 않습니다.

/etc/rsyslog.conf( )를 통해 *.*;cron,auth,authpriv.none -/var/log/syslog모든 크론 작업 이벤트를 다른 로그로 리디렉션하는 방법을 알고 있으며 /etc/default/cron( )를 통해 로깅을 EXTRA_OPTS="-L 4"오류 이벤트 로만 엄격하게 제한하는 것은 쉽습니다. 그러나 이는 모든 크론 작업에 영향을 미칩니다.

로깅을 제한하려면 어떻게 해야 하나요?확증하다cron 작업(빈번한 1분 작업을 나타냄)? 또는 자체를 통해 /etc/rsyslog.conf설정할 수 있습니까 /etc/crontab? 시스템은 Debian 8.0 Jessie입니다.

답변1

IMHO 당신이 말했듯이 이것이 영향을 미치기 때문에 구성 파일을 통해서는 불가능합니다모두사용자의 크론 작업입니다.

그러나 다음과 같이 stdout 출력이나 특정 cron 작업의 stdout 및 stderr을 강제로 리디렉션할 수 있습니다.

* * * * * cron_cmdline_job1 >> /<path>/cron_job1.stdout.log
* * * * * cron_cmdline_job2 >>& /<path>/cron_job2.stdout_stderr.log

표준 출력만 리디렉션하는 경우의 장점은 작업이 종료되면 즉시 표준 오류 내용이 포함된 이메일을 받을 수 있다는 것입니다(원하는 경우 동일한 내용이 단점으로 간주될 수 있음).

해당 로그에 관심이 없다면 직접 방문하실 수 있습니다./dev/비어 있음물론 그 반대도 사실이다.

답변2

cron1분마다 작업을 수행하는 별도의 장기 실행 작업이 있을 수 있습니까 ? 그것은 다음과 같습니다:

#!/bin/bash
flagfile="/var/run/longrunner.pid"
rm -f "$flagfile" 2>/dev/null
printf "$PID\n" >"$flagfile"
while [[ -e "$flagfile ]] ; do
    shortjob &
    sleep 60s
done

shortjob60초의 수면 시간이 왜곡되지 않도록 배경에 넣어두었습니다 . 정수 값으로 제한되지 않으므로 sleep지연을 조정할 수 있습니다.

kill -9 $(cat /var/run/longrunner.pid)OR을 통해 "매분" 작업 제출을 중지할 수 있습니다 rm /var/run/longrunner.pid.

관련 정보