에 관한 기사를 읽고 있어요.예약 된 일들
자동 이메일을 비활성화하는 방법이 있습니다.
이메일 비활성화 기본적으로 cron 작업은 cronjob을 실행하는 사용자 계정으로 이메일을 보냅니다. 필요하지 않은 경우 cron 작업 줄 끝에 다음 명령을 입력합니다.
>/dev/null 2>&1
2
>
&
및 의 자세한 의미는 무엇입니까 1
? 이것을 crontab 파일 끝에 넣으면 이메일 전송이 꺼지는 이유는 무엇입니까?
답변1
>
리디렉션을 위해
/dev/null
블랙홀이며 전송된 모든 데이터는 폐기됩니다.
2
표준 오류에 대한 파일 설명자입니다.
>
리디렉션을 위해
&
파일 설명자의 기호입니다(이 기호가 없으면 다음은 1
파일 이름으로 처리됩니다).
1
표준 출력에 대한 파일 설명자입니다.
따라서 >/dev/null 2>&1
프로그램의 출력을 /dev/null
.includes Standard Error
및 Standard Out
.
자세한 내용은 Linux 문서 프로젝트를 참조하세요.입력/출력 리디렉션페이지.
cron
귀하의 작업에서 일부 결과가 나올 때만 이메일을 받게 됩니다. 모든 것이 로 리디렉션되므로 null
출력이 없으므로 cron
이메일이 전송되지 않습니다.
답변2
/dev/null
블랙홀 역할을 하는 장치 파일입니다. 쓰여진 것은 무엇이든 버려지거나 사라진다. 출력을 제공하는 스크립트를 실행할 때 > /dev/null 2>&1
스크립트 끝에 를 추가하면 스크립트가 생성하는 모든 것(출력 및 오류 메시지)에서 쓰도록 스크립트에 요청합니다 /dev/null
.
그것을 파괴:
2
표준 오류에 대한 핸들이거나STDERR
1
표준 출력에 대한 핸들이거나STDOUT
2>&1
모든 STDERR
지시대로 STDOUT
(즉, 스크립트에 의해 생성된 모든 오류 메시지가 표준 출력으로 처리되어야 함) 필요합니다. 이제 > /dev/null
스크립트의 끝 부분에 있으므로 이는 모든 stdout( STDOUT
)이 에 기록된다는 것을 의미합니다 /dev/null
. 왜냐하면 이제 둘 다 (때문에 ) 결국 블랙홀에 빠지게 STDERR
되기 때문입니다 . 즉, 스크립트가 침묵됩니다.STDOUT
2>&1
STDERR
STDOUT
/dev/null
그런데 >
앞에 하나가 있어야 /dev/null 2>&1
합니다.
x * * * * /path/to/my/script > /dev/null 2>&1
답변3
이는 표준 I/O 리디렉션입니다.
세 개의 기본 파일이 항상 열립니다.
- 표준입력(0)
- 표준출력(1)
- 표준 오류(2)
따라서 이 예에서는 stdout( 1
)이 로 리디렉션됩니다 /dev/null
.
장치 null
는 기록된 모든 데이터를 삭제하는 장치 파일입니다.
그런 다음 stderr은 stdout( 2>&1
)으로 리디렉션되므로 stdout과 stderr은 모두 다음으로 이동합니다./dev/null
그래서이를 crontab 작업 끝에 배치하면 명령의 모든 출력과 오류가 억제됩니다.
인용하다
답변4
일반적으로 cron
cronjob이 실행되면 cronjob에 제공된 명령의 출력이 cronjob을 실행한 사용자 계정으로 전송됩니다. 예를 들어 cronjob이 실행되면 uptime
출력이 uptime
사용자에게 이메일로 전송됩니다.
명확히 해야 할 것은 stdout
이 명령의 표준 출력( )의 의미입니다. 이제 uptime
cornjob에서 다음 명령을 실행 하면 :
uptime >/dev/null 2>&1
2>&1
채널 2(stderr
)를 채널 1(stdout
)로 리디렉션합니다. 이제 두 출력 모두 동일한 채널(1
)에 있습니다.>/dev/null
: 표준 출력(및 표준 오류 출력)이 로 전송됨을 나타냅니다/dev/null
./dev/null
특수 파일입니다.
비어 있거나 특수 파일이 없는 파일에 작성된 데이터는 삭제됩니다.
따라서 출력을 삭제하고 cron에는 보낼 것이 없습니다.