em algumas das minhas máquinas eu tenho este bloco de configuração em sysctl.conf (os números são diferentes em cada máquina):
#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
a localização deste bloco às vezes é diferente. eu queria escrever um bash que removesse essas configurações antigas e inserisse uma nova configuração. uma vez que é sysctl.conf eu preciso fazê-lo com segurança. como posso removê-los com sed
ou grep
e ter certeza de que apenas este bloco será removido?
Se esse for o único lugar no arquivo onde essas linhas aparecem:
Isso procura por tudo entre e incluindo a primeira e a última linhas desse bloco e o exclui. Incluí a primeira linha em sua totalidade, em vez de uma string menor, caso
Size
ou outra coisa apareça em outro lugar do arquivo. Eu também useikernel.msgmnb
como você afirmou que o número é diferente em outras máquinas.Esse comando enviará as alterações para stdout para que você possa ter certeza de que as alterações são as desejadas. Se estiverem, você pode fazer uma edição inplace do arquivo adicionando a
-i
opção: