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