Como posso apagar todos os meus arquivos principais de forma limpa?

3

Meu computador no trabalho tem uma tendência a gerar uma quantidade excessiva de arquivos principais, que podem ser úteis para a depuração, mas ocupam lentamente todo o espaço disponível no meu computador. Eu fiz este comando para excluir todos os arquivos principais, dado que todos eles começam com "core".

locate /core. | grep -v core.h | grep -v core.c | grep -v core.py \
  | grep -v core.xml | grep -v core.txt | grep -v .gz \
  | grep -v core.so | grep -v chrome |sudo xargs rm

Funciona, mas é pesado e excluiria digamos core.sh se esse arquivo existisse no meu computador. Eu acho que um jeito melhor seria:

  1. Use o locate para encontrar todos os arquivos que começam com "core".
  2. Alimente essa lista em file
  3. Faça uma lista de tudo o que file diz ser um arquivo principal. Presumindo que um arquivo seja um arquivo principal, se e somente se a saída de file file_name contiver a frase "Arquivo núcleo LSB de 64 bits x86-64".
  4. Alimente isso para sudo xargs rm

Mas não sei como passo três nessa lista.

    
por Joshua Snider 10.09.2015 / 21:02

2 respostas

0

Eu acabei fazendo isso em python.

#!/usr/bin/env python2

from subprocess import PIPE, Popen

def is_core_file(filepath):
  ''' Use file command to determine if something is an actual core file.'''
  prog = Popen(["file", filepath], stdin=PIPE, stdout=PIPE)
  out = prog.communicate()[0]
  return "core file" in out

def main():
  prog = Popen(["sudo", "updatedb"], stdin=PIPE, stdout=PIPE)
  prog.communicate()
  prog = Popen(["locate", "/core."], stdin=PIPE, stdout=PIPE)
  cores = prog.communicate()[0].split('\n')
  for core in cores:
    if is_core_file(core):
      print("deleting " + core)
      prog = Popen(["sudo", "rm", "-f", core])

if __name__ == '__main__':
  main()

Editado para usar main.

    
por Joshua Snider 15.09.2015 / 17:04
0

Eu tenho usado o Linux desde o Hardy Heron e me deparei com esse script de uma linha que remove arquivos do core dump de forma limpa e segura. Não me lembro onde a encontrei originalmente, mas funciona muito bem. Digite a seguinte linha como super usuário do curso:

find / -type f -name core -atime +1 -exec rm {} \;

É isso. Muito simples e com a devida substituição pode ser usada para remover arquivos / tmp e / var / tmp. O atributo -atime é variável para que você possa decidir quantos dias de arquivos deseja manter ou não. Sempre tente as soluções simples primeiro.

    
por Larry Robinson 19.09.2016 / 09:44