`at` 및 `cron` 작업의 출력은 어디로 가나요?

`at` 및 `cron` 작업의 출력은 어디로 가나요?

표시할 화면이 없으면 at표준 출력과 작업은 어디로 가나요 ?cron

작업이 시작된 디렉터리나 내 홈 디렉터리에는 나타나지 않습니다.

백그라운드 작업을 디버깅하거나 추적하는 방법을 모른다면 이를 어떻게 실제로 알아낼 수 있습니까?

답변1

크론 매뉴얼 페이지에서:

명령이 실행되면 모든 출력이 crontab 소유자(또는 crontab의 MAILTO 환경 변수가 있는 경우 해당 사용자)에게 메일로 전송됩니다. syslog 및 ps 출력에 표시된 것처럼 이러한 프로세스를 실행하는 cron 하위 복사본의 이름은 강제로 대문자로 표시됩니다.

따라서 /root 메일이나 시스템 로그(예: /var/log/syslog)를 확인해야 합니다.

답변2

장기간 실행되는 프로세스의 경우 이메일을 받기 전에 출력이 무엇인지 아는 것이 유용한 경우가 있습니다. 저는 다음 접근 방식을 사용합니다.

  1. ps실행 중인 프로그램의 프로세스 ID를 찾는 데 사용됩니다 ( PID 아래).
  2. lsof출력이 기록되는 파일을 찾는 데 사용됩니다 .

    lsof -p PID
    

출력에서 1u열 제목 아래에서 및 행을 찾습니다.2uFD

이 줄은 프로세스 출력이 메일을 통해 전송되기 전에 어떤 임시 파일에 들어갈지 알려줍니다. 일반적으로 의 경우 at파일은 /var/spool/cron/atjobs/. 마지막으로 파일을 표시하면 프로세스의 (현재) 출력을 찾을 수 있습니다.

답변3

@kapad, @janaka: 지금 답변 완료Linux에서 삭제된 열린 파일(crontab 작업 실행 결과)에 어떻게 액세스합니까?

따라서 이 경우 다음과 같은 작업을 수행합니다.

" tail /proc/[the-pid]/fd/1"

관련 정보