특정 sysctl.conf 설정 제거

특정 sysctl.conf 설정 제거

내 컴퓨터 중 일부에는 sysctl.conf에 다음 설정 블록이 있습니다(숫자는 컴퓨터마다 다릅니다).

#Size Of RAM (In GB):   23
kernel.shmmni=  2547
kernel.shmmax=  365482458
kernel.shmall=  25471984
#kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI>
kernel.sem=     325     12496852  74      3654
kernel.msgmni=  1204
kernel.msgmax=  57452
kernel.msgmnb=  74235

이 블록의 위치는 때때로 다양합니다. 이러한 이전 설정을 제거하고 새 구성을 삽입하는 bash를 작성하고 싶습니다. sysctl.conf이므로 안전하게 수행해야 합니다. sed또는 를 사용하여 해당 블록을 삭제 grep하고 이 블록만 삭제되도록 하려면 어떻게 해야 합니까 ?

답변1

파일에서 다음 줄이 나타나는 유일한 위치인 경우:

sed '/#Size Of RAM (In GB):   23/,/kernel.msgmnb/d' /etc/sysctl.conf

블록 사이의 모든 내용(블록의 첫 번째 줄과 마지막 줄 포함)을 검색하여 삭제합니다. Size파일의 다른 곳에 나타날 경우를 대비하여 작은 문자열이 아닌 첫 번째 줄 전체를 포함했습니다 . kernel.msgmnb당신이 말했듯이 나도 그것을 사용했습니다. 다른 컴퓨터에서는 숫자가 다릅니다.

이 명령은 변경 사항을 표준 출력으로 보내므로 원하는 변경 사항이 적용되었는지 확인할 수 있습니다. 그렇다면 스위치를 추가하여 파일을 그 자리에서 편집할 수 있습니다 -i.

sed -i '/#Size Of RAM (In GB):   23/,/kernel.msgmnb/d' /etc/sysctl.conf

관련 정보