우리는 리눅스 박스(Redhat 6)를 가지고 있습니다.
모든 매개변수를 인쇄하면 /etc/sysctl.conf
약 20개만 표시되지만 실행하면 sysctl -a
200개가 넘게 표시됩니다.
그러면 이러한 모든 매개변수를 어디에서 인쇄해야 합니까 sysctl -a
?
아니면 예를 들어 우리가 할 때
sysctl -w variable=value
변수를 어디에 저장해야 하는지 어떻게 알 수 있나요?
각 매개변수가 동적인지 정적인지 어떻게 알 수 있나요?
답변1
시스템 제어 레지스터설정은 커널에 저장됩니다. 이러한 설정은 커널 동작에 영향을 미치며 기본적으로 시스템에서 실행되는 프로그램에서 읽고 쓸 수 있는 커널 변수입니다.
커널이 시작되면 각 sysctl 설정에는 기본값이 있습니다. 이 값은 command와 같은 프로그램을 통해 언제든지 변경할 수 있으며 sysctl
, Linux에서는 /proc/sys
.
이 파일은 /etc/sysctl.conf
런타임 시 설정 값을 결정하지 않습니다. 커널에 컴파일된 기본값의 특정 설정을 변경하기 위해 부팅 시에만 사용됩니다. 일부 변경 사항을 적용한 경우 /etc/sysctl.conf
sysctl "서비스"를 다시 시작하여 전체적으로 적용할 수 있습니다. sysctl 서비스는 실행 중인 프로세스와 일치하지 않으며 커널 내: 시작에 설정만 로드하는 의사 서비스입니다.
재부팅 후에도 값이 유지되도록 설정을 변경하려면 에 추가하세요 /etc/sysctl.conf
. 설정을 임시로 적용하거나 설정을 시도하려면 sysctl
또는 를 사용하세요 echo … >/proc/sys/…
.
답변2
각 매개변수가 동적인지 정적인지 어떻게 알 수 있나요?
의 모든 커널 매개변수는 sysctl
동적입니다. 커널 버전과 비교하여 이 숫자를 확인하면 sysctl -a | wc -l
1000 이상이어야 합니다.
이러한 값을 읽으려면 다음과 같은 몇 가지 스마트 옵션이 있습니다.
sysctl net.ipv4.ip_forward # display specific parameter
sysctl net.ipv4 # display all net.ipv4.* parameters
sysctl -a # display all parameters
/etc/sysctl.conf
값을 지속적으로 쓰려면 디렉토리 에 있는 모든 conf 파일을 사용할 수 있습니다 /etc/sysctl.d/
. conf 파일을 업데이트한 후에는 구성 파일을 다시 로드해야 합니다.
sysctl -p [filename]
물론 sysctl
Gilles가 설명하는 대로 "서비스"를 다시 시작할 수 있습니다.
sysctl -a는 모든 커널 매개변수를 어디에서 인쇄합니까?
의사 파일 시스템 procfs(man procfs)에서. 커널 데이터 구조에 대한 인터페이스를 제공합니다. 일반적으로 /proc
시스템에 의해 자동으로 설치 됩니다 .