이 코드는 /etc/cron.daily/apf에서 찾았습니다.
#!/bin/bash
/etc/apf/apf -f >> /dev/null 2>&1
/etc/apf/apf -s >> /dev/null 2>&1
방화벽을 비우고 다시로드합니다.
나는 그 >> /dev/null 2>&1
부분을 이해하지 못한다 .
cron에서 이것을 사용하는 목적은 무엇입니까? 방화벽 규칙을 재정의하고 있습니다. 이 크론 작업을 안전하게 제거 할 수 있습니까?
답변
>> /dev/null
표준 출력 ( stdout
)을로 리디렉션 하여 /dev/null
버립니다.
(이것은 >>
불필요한 >>
것을 의미합니다 . 왜냐하면 추가하는 동안 >
은 자르고 쓰는 것을 의미하고, 추가하거나 쓰는 /dev/null
것은 동일한 순 효과 를 갖습니다. 나는 보통 >
그런 이유로 사용 합니다.)
2>&1
표준 오류 ( 2
)를 표준 출력 ( 1
)으로 리디렉션 한 다음 표준 출력이 이미 리디렉션되었으므로이를 버립니다.
답변
하자 브레이크 >> /dev/null 2>&1
부품에 문 :
1 부 : >>
출력 리디렉션
프로그램 출력을 재지 정하고 파일 끝에 출력을 추가하는 데 사용됩니다. 더…
2 부 : /dev/null
특수 파일
이것은 의사 장치 특수 파일 입니다.
Command ls -l /dev/null
는이 파일에 대한 세부 정보를 제공합니다.
crw-rw-rw-. 1 root root 1, 3 Mar 20 18:37 /dev/null
관찰 했습니까 crw
? 이는 직렬 액세스를 제공하는 문자 특수 파일 유형 의 의사 장치 파일 임을 의미합니다 .
/dev/null
모든 입력을 받아들이고 버립니다. 출력을 생성하지 않습니다 (항상 파일 끝 표시를 읽을 때 표시 함). 참조 : Wikipedia
3 부 : 2>&1
파일 설명자
프로그램을 실행할 때마다 운영 체제는 항상 파일을 열 때마다 알듯이 3 개의 파일, 표준 입력, 표준 출력 및 표준 오류를 엽니 다. 커널 에서 운영 체제 는 음이 아닌 정수를 반환합니다. 파일 디스크립터 . 이들 파일의 파일 디스크립터는 각각 0, 1 및 2입니다.
그래서 2>&1
단순히 표준 출력 리디렉션 표준 오류는 말한다.
&
뒤에 오는 것은 파일 이름이 아니라 파일 설명 자라는 것을 의미합니다.
요컨대이 명령을 사용하면 실행하는 동안 프로그램이 소리 지르지 않도록 지시합니다.
사용의 중요성 2>&1
?
터미널에서 일부 오류가 발생한 경우에도 출력을 생성하지 않으려는 경우. 보다 명확하게 설명하기 위해 다음 예제를 살펴 보겠습니다.
$ ls -l > /dev/null
위 명령의 경우 터미널에 출력이 인쇄되지 않았지만이 명령으로 오류가 발생하면 어떻게됩니까?
$ ls -l file_doesnot_exists > /dev/null
ls: cannot access file_doesnot_exists: No such file or directory
출력을로 리디렉션하고 /dev/null
있지만 터미널에 인쇄됩니다. 오류 출력을로 리디렉션하지 않기 때문에 오류 출력 /dev/null
을 리디렉션하려면 다음을 추가해야합니다 2>&1
.
$ ls -l file_doesnot_exists > /dev/null 2>&1
답변
이것은 프로그램을 조용히 실행하고 모든 출력을 숨기는 방법입니다.
/dev/null
쓰여진 모든 것을 버리는 특별한 파일 시스템 객체입니다. 스트림을 스트림으로 리디렉션하면 프로그램의 출력이 숨겨집니다.
이 2>&1
부분은 “오류 스트림을 출력 스트림으로 리디렉션”을 의미하므로 출력 스트림을 리디렉션하면 오류 스트림도 리디렉션됩니다. 프로그램이 stderr
지금 작성하더라도 해당 출력도 삭제됩니다.
답변
/dev/null
쓰기는 모두 버리는 표준 파일이지만 쓰기 작업이 성공했다고보고합니다.
1
표준 출력이며 2
표준 오류입니다.
2>&1
표준 오류를 표준 출력으로 리디렉션합니다. &1
는 파일 디스크립터 (표준 출력)를 나타내며, 그렇지 않으면 (만 사용하는 경우 1
) 표준 오류를이라는 파일로 리디렉션합니다 1
. [any command] >>/dev/null 2>&1
모든 표준 오류를 표준 출력으로 리디렉션하고 모든 표준 오류를에 기록합니다 /dev/null
.
답변
나는 >> /dev/null 2>&1
조용한 cronjob에 사용 합니다. cronjob은 작업을 수행하지만 보고서를 전자 메일로 보내지 않습니다.
내가 아는 한 제거하지 마십시오 /dev/null
. 특히 cPanel 을 실행할 때 유용한 cronjob 보고서에 유용 합니다.
답변
다른 사람들이 설명했듯이 / dev / null에 쓰면 프로그램의 출력이 제거됩니다. 일반적으로 cron은 cronjob으로 시작된 프로세스의 모든 출력에 대해 이메일을 보냅니다. 따라서 출력을 / dev / null에 쓰면 cron에서 주소를 지정한 경우 스팸이 발생하지 않습니다.
답변
편집 /etc/conf.apf
. 설정하십시오 DEVEL_MODE="0"
. DEVEL_MODE
세트하는 1
5 분 후에 APF 정지 cron 작업을 추가합니다.
