나는 항상 /proc/sys/kernel/panic
으로 설정되어 있습니다 0
. 이 옵션에 대한 설명을 참조하세요.kernel.org우리는 그것을 볼 수 있습니다:
공황:
이 파일의 값은 긴급 상황에서 다시 시작하기 전에 커널이 기다리는 시간(초)을 나타냅니다. 소프트웨어 감시 기능을 사용하는 경우 60으로 설정하는 것이 좋습니다.
0
이것으로부터 다시 시작하기 전에 0초를 기다리면 즉시 다시 시작된다는 결론을 내릴 수 있습니다 .
하지만proc
MAN 페이지 설명은 다음과 같습니다.
/proc/sys/kernel/panic
이 파일은 커널 변수 Panic_timeout에 대한 읽기/쓰기 액세스를 제공합니다. 이 값이 0이면 커널은 패닉 상태에서 반복됩니다. 0이 아닌 경우 이 시간(초) 후에 커널이 자동으로 다시 시작되어야 함을 나타냅니다. 소프트웨어 감시 장치 드라이버를 사용하는 경우 60으로 설정하는 것이 좋습니다.
여기서의 아이디어 0
는 그 반대입니다. 재부팅하지 마십시오.
그렇다면 왜 그렇게 신뢰할 수 있는 출처가 그렇게 오해의 소지가 있는 정보를 제공할까요? 아니면 MAN 페이지가 정확하지 않은 것일까요?
PS 한 섹션의 힌트만 보면 panic_on_oops
(이 글을 읽은 경우) MAN 페이지가 정확하다고 추측할 수 있습니다. 또는 기술에 정통한 경우 커널 소스 코드에서 내용을 연구할 수 있습니다.
답변1
신뢰할 수 있는 소스는 커널의 구현이므로 먼저 살펴보겠습니다.
panic
항목sysctl
명명된에 해당panic_timeout
. 이것은부호 있는 정수, 한 번패닉 행동 제어다음과 같이:
- 엄격히 양수인 경우
panic_timeout
커널은panic_timeout
패닉 상태가 된 후 몇 초 동안 기다립니다. - 0이 아닌 경우
panic_timeout
패닉 후(또는 해당되는 경우 대기 후) 커널이 다시 시작됩니다. - 커널이 재부팅되지 않으면 메시지를 인쇄하고 영원히 반복됩니다.
따라서 매뉴얼 페이지는 정확하고 커널 자체 문서는 불완전합니다.sysctl/kernel.rst
이제 panic
더 자세한 문서를 사용할 수 있습니다. 이것커널 버전 5.7-rc1에서 수정되었습니다..
답변2
왜그런신뢰할 수 있는 출처가 제공하는그런오해의 소지가 있는 정보인가요?
우선, 이는 약간 오해를 불러일으킬 수 있습니다. 오류보다는 성급하게 결론을 내리는 것이 좋습니다. 나는 kernel.org가 특별한 경우 "0"을 무시한다고 말하고 싶습니다.
자세한 내용은 모르겠습니다kernel.orgDocumentation/
, 그러나 본질적으로 공식 커널(네트워크 형식, 패킷)과 일부 추가 정보가 혼합되어 있습니다. 가장 좋은 예는 시작 매개변수 목록으로, 소위 말하는 대로 여러 위치에서 "수집"됩니다.
"kernel.org"에는 "추가 리소스" 아래에 "문서" 링크가 나열되어 있습니다. 그것은 당신을 거기로 데려다준다 doc/html/latest/
. 아래 믹스에 대한 링크도 있습니다 /doc
.
(스핑크스 형식) 문서의 시작 부분에 다음과 같이 나와 있습니다.
커널 자체와 마찬가지로 커널 문서도 대체로 다음과 같습니다.진행중인 작업;이것은 우리가 우리의 여러 측면을 통합하려고 노력할 때 특히 그렇습니다. 흩어진 파일일관된 전체가 되십시오. 문서 개선 사항은 다음과 같습니다.환영;...
이것은 Stunning Cow Book을 가지고 있는 사람이 유지 관리하고 있는 man 5 proc
프로젝트(또는 패키지)의 일부입니다 . man-pages
이 페이지는 모두 끝에 부제(섹션)로 "COLOPHON"이 있습니다. 또한 이질적이며 일부는 방금 수집되었으며(모든 POSIX "1p" 페이지) 일부는 공백을 메우기 위해 작성되었습니다.
존재하다man7.orgKerrisk 씨의 작업을 직접 볼 수 있습니다. 내 생각에 그는 자신의 책을 잘 팔면서도 일련의 오픈 소스 매뉴얼 페이지를 관리하는 일을 잘하고 있는 것 같습니다.
내 예에서는 그가 더 정확합니다. 물론 둘 다 관련이 있는 것 같습니다("언제...장치 드라이버...60").
우리를통합을 위해 노력하다우리의흩어져 있는 많은 문서를 일관된 전체로 통합합니다.
이것은 절반만 이해가 됩니다. 누구의 파일소개, 책임은 누구에게 있습니까?
내 의사코드는 다음과 같습니다.
if timeout > 0 then loop for 'timeout' seconds
if timeout != 0 then reboot
loop for ever
이는 음수 값은 즉시 재시작을 의미하고 양수 값은 두 if가 모두 true임을 의미합니다. 0은 최종 사이클로 직접 연결됩니다.