在我的一些机器上,我在 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
or删除它们grep
并确保只有这个块会被删除?
如果这是文件中出现这些行的唯一位置:
这会搜索该块之间的所有内容(包括该块的第一行和最后一行)并将其删除。我完整地包含了第一行,而不是一个较小的字符串,以防万一
Size
或其中的其他内容出现在文件的其他地方。kernel.msgmnb
正如你所说,我也使用过其他机器上的数字不同。该命令会将更改发送到标准输出,以便您可以确保更改是您想要的。如果是,您可以通过添加
-i
开关对文件进行就地编辑: