우분투 18.04에서는 다음과 man cron
같이 말합니다.
cron은 syslog 도구 "cron"에 해당 작업을 기록하며 표준 syslogd(8) 도구를 사용하여 기록을 제어할 수 있습니다.
또한 cron의 기본 구성은 cron 데몬을 시작하는 init.d 스크립트가 읽는 /etc/default/cron에 의해 제어됩니다. 이 파일은 cron이 시스템의 환경 변수를 읽을지 여부를 결정하고 실행 전에 cron 프로그램에 추가 옵션을 추가하여 로깅을 구성하거나 /etc/cron에서 파일을 처리하는 방법을 정의할 수 있도록 합니다. 디.
작업을 추가했습니다./etc/crontab
* * * * * t ( date && echo $PATH && date )
작업의 출력을 찾으려고 했지만 시스템 로그에서 찾을 수 없는 이유는 무엇입니까? 감사해요.
$ less /var/log/syslog
...
Nov 3 12:21:01 ocean CRON[23992]: (t) CMD (( date && echo $PATH && date ) )
Nov 3 12:21:01 ocean CRON[23985]: (CRON) info (No MTA installed, discarding output)
$ cat /etc/default/cron
# This file has been deprecated. Please add custom options for cron using
# $ systemctl edit cron.service
# or
# $ systemctl edit --full cron.service
답변1
cron
그것을 기록하다행동syslog
자세한 내용 수준은 구성된 로그 수준에 따라 달라집니다 . 여기에는 고용으로 인한 결과는 포함되지 않습니다.
후자에 관해서는 매뉴얼 페이지에 다음과 같이 나와 있습니다.
명령이 실행되면 모든 출력이 crontab 소유자(또는 crontab의 MAILTO 환경 변수가 있는 경우 해당 사용자)에게 메일로 전송됩니다.
MTA를 구성하지 않았으므로 로그에 표시된 대로 출력이 삭제됩니다.
MTA를 구성하려면 Debian 및 그 파생 패키지의 MTA 패키지에 sudo apt install postfix
프롬프트를 따르기만 하면 간단한 설정을 구성할 수 있는 좋은 설치 스크립트가 제공됩니다.
또는 다음 명령을 사용하여 cron 작업의 출력을 시스템 로그로 리디렉션할 수 있습니다 logger
. 작업 출력을 logger -p cron.info
(일반 출력의 경우) 및 logger -p cron.err
(오류의 경우)로 파이프합니다.
cron에서 출력이 이메일로 전송될 것으로 예상하는 이유는 cron 작업 출력의 세분성이 시스템 로거의 세분성과 일치하지 않기 때문입니다(로그는 사용자별로 저장되지 않음). 시스템의 모든 사용자는 cron 작업을 설정할 수 있지만 사용자가 반드시 시스템 로그에 액세스할 수 있는 것은 아니며 이러한 로그에 액세스할 수 있는 다른 모든 사용자가 자신의 작업 출력을 보는 것을 원하지 않을 수도 있습니다. cron이 설계되었을 때 이메일은 이를 관리하는 사용자에게 cron 작업의 결과를 보내는 합리적인 방법이었습니다. Unix 시스템은 효율적인 이메일 설정을 가질 것으로 예상되었습니다. 오늘날 이는 이메일의 적합성이 변경되었기 때문이 아니라 유용성이 변경되었기 때문에 덜 명확해졌습니다. 업무용 이메일이 있는 시스템에서는 이를 cron 출력에 사용하는 것이 좋습니다. 또는 작업을 사용자별 로그 파일로 출력할 수도 있습니다(각 작업에 특정 리디렉션이 있음).
systemd 타이머에는 이 문제가 발생하지 않습니다. 사용자 타이머는 개인 사용자별 로그에 기록됩니다.