표시할 화면이 없으면 at
표준 출력과 작업은 어디로 가나요 ?cron
작업이 시작된 디렉터리나 내 홈 디렉터리에는 나타나지 않습니다.
백그라운드 작업을 디버깅하거나 추적하는 방법을 모른다면 이를 어떻게 실제로 알아낼 수 있습니까?
답변1
크론 매뉴얼 페이지에서:
명령이 실행되면 모든 출력이 crontab 소유자(또는 crontab의 MAILTO 환경 변수가 있는 경우 해당 사용자)에게 메일로 전송됩니다. syslog 및 ps 출력에 표시된 것처럼 이러한 프로세스를 실행하는 cron 하위 복사본의 이름은 강제로 대문자로 표시됩니다.
따라서 /root 메일이나 시스템 로그(예: /var/log/syslog)를 확인해야 합니다.
답변2
장기간 실행되는 프로세스의 경우 이메일을 받기 전에 출력이 무엇인지 아는 것이 유용한 경우가 있습니다. 저는 다음 접근 방식을 사용합니다.
ps
실행 중인 프로그램의 프로세스 ID를 찾는 데 사용됩니다 (PID
아래).lsof
출력이 기록되는 파일을 찾는 데 사용됩니다 .lsof -p PID
출력에서 1u
열 제목 아래에서 및 행을 찾습니다.2u
FD
이 줄은 프로세스 출력이 메일을 통해 전송되기 전에 어떤 임시 파일에 들어갈지 알려줍니다. 일반적으로 의 경우 at
파일은 /var/spool/cron/atjobs/
. 마지막으로 파일을 표시하면 프로세스의 (현재) 출력을 찾을 수 있습니다.
답변3
@kapad, @janaka: 지금 답변 완료Linux에서 삭제된 열린 파일(crontab 작업 실행 결과)에 어떻게 액세스합니까?
따라서 이 경우 다음과 같은 작업을 수행합니다.
" tail /proc/[the-pid]/fd/1
"