特定の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

おすすめ記事