Como excluir permanentemente TODOS os kernels mais antigos usando o shell com a questão de confirmação?

4

Para liberar algum espaço em disco, você pode verificar com qual kernel você está usando:

uname -r

E, em seguida, remova TODAS as versões do kernel, mas a atual com:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' | xargs sudo apt-get -y purge

Você pode executar este comando como uma tarefa cron, se quiser que isso seja feito automaticamente. No entanto, isso não é sábio, como você deve sempre ter um kernel antigo ou dois para voltar a (apenas no caso de um novo não funcionar com seu sistema). No mínimo, se você acabou de atualizar o kernel, reinicialize antes de excluir as versões mais antigas.

  

Fonte: Como faço para remover versões antigas do kernel para limpar o menu de inicialização?

Mas este comando irá começar a desinstalar imediatamente, sem pedir !

Como posso alterar essa linha, então você é solicitado a continuar antes de desinstalar?

    
por rubo77 29.10.2013 / 09:44

1 resposta

2

Use o seguinte comando em vez do que você usou antes:

sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d')

Aqui está minha saída quando executo o comando acima:

saurav@saurav-P4I45Gx-PE:~$ sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d')
[sudo] password for saurav: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-3.11.0-031100* linux-headers-3.11.0-031100-generic* linux-image-3.11.0-031100-generic*
0 upgraded, 0 newly installed, 3 to remove and 39 not upgraded.
After this operation, 212 MB disk space will be freed.
Do you want to continue [Y/n]? n
Abort.

É isso aí!

    
por Saurav Kumar 29.10.2013 / 10:08