>/dev/null 2>&1이 작동하지 않는 이유는 무엇입니까?

>/dev/null 2>&1이 작동하지 않는 이유는 무엇입니까?

Ubuntu 16.04를 실행하면서 /etc/crontab에 다음을 추가했습니다.

* * * * * root wget https://www.exmaple.org/bus/ >/dev/null 2>&1

cron 작업은 정상적으로 실행되지만 결과는 예상대로 삭제되지 않고 /root/에 파일로 기록됩니다.

답변1

>/dev/null명령의 표준 출력을 삭제합니다. 귀하의 예에서는 그렇지 않습니다. 2>&1명령의 표준 오류가 삭제되도록 합니다. 귀하의 예에는 wget에 의해 표시되는 상태 및 오류 정보가 포함됩니다.

URL이 유효한 경우(예: 서버가 페이지의 일부 콘텐츠를 반환하는 경우) wget은 페이지 콘텐츠를 파일에 저장합니다. 이는 wget의 표준 출력이나 wget의 표준 오류를 표시하지 않습니다. 이는 wget이 파일에 저장하는 일부 데이터입니다. wget은 표준 스트림이 아닌 이름으로 열린 파일로 출력하므로 리디렉션의 영향을 받지 않습니다.

출력을 어디에도 저장하지 않으려면 wget에 다음 위치에 저장하도록 지시하세요 /dev/null.

wget -O /dev/null …

cron 작업의 오류는 유용하지만 Ubuntu는 기본적으로 해당 오류를 삭제합니다. cron 작업의 출력(표준 출력 및 표준 오류)은 로컬 메일을 통해 전송됩니다.관리자는 루트의 메일을 어떻게 읽어야 합니까?이를 달성하는 방법을 알아보세요. 짜증나게도 wget은 모든 것이 정상일 때에도 많은 출력을 생성하지만 오류만 표시하는 옵션은 없습니다. 출력을 저장하고 명령이 성공하면 삭제하여 이 문제를 해결할 수 있습니다.

trace=$(wget … 2>&1) || echo "$trace" >&2

관련 정보