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);
}