net.core.rmem_max
with 의 값을 수정했으며 sysctl
이제 기본값으로 다시 설정하고 싶습니다.
재부팅하면 net.core.rmem_max
기본값으로 되돌아 가지만 (에서 재정의되지 않았기 때문에 /etc/sysctl.conf
) 재부팅하지 않고이 값을 알 수 있습니까?
이상적으로 sysctl net.core.rmem_max
는 값을 수정하기 전에 값을 읽도록 실행해야 하지만 잊어 버렸습니다 …
답변
일반적으로 불가능합니다 : 커널은 원래 값을 유지하지 않습니다 (적어도 Linux에서는 그렇지 않으며 다른 유닉스 변형의 경우도 마찬가지 임). 설정 값은 변수에 저장됩니다. 설정을 변경하면 변수를 포함하는 메모리가 되돌릴 수 없게 업데이트됩니다.
대부분의 설정에서 변수의 초기 값은 컴파일 타임에 결정되어 커널 바이너리에 저장되는 상수입니다. 따라서 원칙적으로 커널 바이너리를 검사하여 기본값을 찾을 수 있습니다. 원하는 설정에 해당하는 기호를 찾아서 커널 바이너리에서 해당 기호의 주소를 따라야합니다. 가상 머신에서 커널을 부팅하면 작업이 줄어 듭니다.
대부분의 설정은 커널 소스 kernel/sysctl.c
및 기타 파일을 확인할 수 있습니다. 당신은 같은 정의를 볼 수 있습니다
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(에서 net/core/sysctl_net_core.c
), 당신은 초기화 추적 할 수있는 sysctl_rmem_max
변수를 . 이것은 상수에서 초기화되지만 확장하려면 C 코드를 읽는 데 약간의 시간이 걸립니다.
답변
내 OpenBSD 컴퓨터에서 /etc/sysctl.conf는 많은 기본 sysctl 값을 나열하지만이 목록은 완전한 것은 아닙니다.
아마도 가장 좋은 방법은 sysctl 코드를 읽거나 같은 OS를 실행하는 친구에게 값을 요청하는 것입니다. 🙂