이 crontab 기본 기사에서 '>/dev/null 2>&1'은 무엇을 의미합니까? [복사]

이 crontab 기본 기사에서 '>/dev/null 2>&1'은 무엇을 의미합니까? [복사]

에 관한 기사를 읽고 있어요.예약 된 일들

자동 이메일을 비활성화하는 방법이 있습니다.

  1. 이메일 비활성화 기본적으로 cron 작업은 cronjob을 실행하는 사용자 계정으로 이메일을 보냅니다. 필요하지 않은 경우 cron 작업 줄 끝에 다음 명령을 입력합니다.

    >/dev/null 2>&1
    

2 > &및 의 자세한 의미는 무엇입니까 1? 이것을 crontab 파일 끝에 넣으면 이메일 전송이 꺼지는 이유는 무엇입니까?

답변1

>리디렉션을 위해

/dev/null블랙홀이며 전송된 모든 데이터는 폐기됩니다.

2표준 오류에 대한 파일 설명자입니다.

>리디렉션을 위해

&파일 설명자의 기호입니다(이 기호가 없으면 다음은 1파일 이름으로 처리됩니다).

1표준 출력에 대한 파일 설명자입니다.

따라서 >/dev/null 2>&1프로그램의 출력을 /dev/null.includes Standard ErrorStandard 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되기 때문입니다 . 즉, 스크립트가 침묵됩니다.STDOUT2>&1STDERRSTDOUT/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

일반적으로 croncronjob이 실행되면 cronjob에 제공된 명령의 출력이 cronjob을 실행한 사용자 계정으로 전송됩니다. 예를 들어 cronjob이 실행되면 uptime출력이 uptime사용자에게 이메일로 전송됩니다.

명확히 해야 할 것은 stdout이 명령의 표준 출력( )의 의미입니다. 이제 uptimecornjob에서 다음 명령을 실행 하면 :

uptime >/dev/null 2>&1
  • 2>&1채널 2( stderr)를 채널 1( stdout)로 리디렉션합니다. 이제 두 출력 모두 동일한 채널( 1)에 있습니다.
  • >/dev/null: 표준 출력(및 표준 오류 출력)이 로 전송됨을 나타냅니다 /dev/null. /dev/null특수 파일입니다.

비어 있거나 특수 파일이 없는 파일에 작성된 데이터는 삭제됩니다.

따라서 출력을 삭제하고 cron에는 보낼 것이 없습니다.

관련 정보