특정 프로세스 시작에 대한 CRON 알림을 비활성화하거나 숨길 수 있습니다

특정 프로세스 시작에 대한 CRON 알림을 비활성화하거나 숨길 수 있습니다

crontab에서 여러 cron 작업을 활성화할 수 있는지 알고 싶지만 1분마다 하나의 작업만 시작됩니다. 여기서 문제는 이 하나만을 제외한 다른 모든 작업 정보에 대한 로그를 유지하고 싶다는 것입니다.

Oct 25 14:50:01 dtest CRON[942]: (root) CMD (/usr/bin/python2.7 check.py > /dev/null 2>&1)

현재 이 모든 줄이 너무 많아서 cron이 선택한 프로세스에 대한 로그 항목을 억제할 수 있는지 궁금합니다.

답변1

cronie를 사용하는 배포판(예: CentOS, RHEL, openSUSE, Fedora, Gentoo, Arch 등)에서는 crontab의 첫 번째 열에 특수 "-" 항목을 사용할 수 있습니다.

Vixie cron을 사용하는 Debian을 사용하고 있으므로 이는 귀하의 경우에 도움이 되지 않습니다.

CentOS에서의 사용 예는 다음과 같습니다. 작동 방식 보기touch /tmp/foo2 했다19:37에 달리기 시작했지만 /var/log/cron.

# crontab -l
* * * * * touch /tmp/foo1
-* * * * * touch /tmp/foo2
# ls -l /tmp/foo*
-rw-r--r--. 1 root root 0 Oct 25 19:37 /tmp/foo1
-rw-r--r--. 1 root root 0 Oct 25 19:37 /tmp/foo2
# grep foo /var/log/cron
Oct 25 19:37:01 instance-2 CROND[12639]: (root) CMD (touch /tmp/foo1)
#

이것이 완전히 문서화되어 있는지는 확실하지 않지만 이 동작을 설정하는 코드는 다음에서 찾을 수 있습니다.크로니 소스코드

/* check for '-' as a first character, this option will disable 
* writing a syslog message about command getting executed
*/
if (ch == '-') {
/* if we are editing system crontab or user uid is 0 (root) 
* we are allowed to disable logging 
*/
    if (pw == NULL || pw->pw_uid == 0)
        e->flags |= DONT_LOG;
    else {
        log_it("CRON", getpid(), "ERROR", "Only privileged user can disable logging", 0);
        ecode = e_option;
        goto eof;
    }
    ch = get_char(file);
    if (ch == EOF) {
        free(e);
        return NULL;
    }
}

그럼 어느 것을 인용할 것인가Cronie 소스 코드의 다른 곳

if ((e->flags & DONT_LOG) == 0) {
    char *x = mkprints((u_char *) e->cmd, strlen(e->cmd));
    log_it(usernm, getpid(), "CMD", x, 0);
    free(x);
}

관련 정보