マイコンピュータの中には、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