Как я могу удалить все свои базовые файлы чисто?

Мой компьютер на работе имеет тенденцию генерировать чрезмерную сумму базовых файлов, которые могут быть полезны для отладки, но медленно поднимать все свободное место на моем компьютере. Я сделал эту команду для удаления всех базовых файлов, учитывая, что они все запускают с "ядра".

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

Это работает, но это является громоздким и удалило бы, говорят core.sh если тот файл существовал на моем компьютере. Я думаю, что лучший путь был бы:

  1. Использование располагается для нахождения всех файлов, запускающихся с "ядра".
  2. Канал тот список в file
  3. Составьте список из всего это file говорит базовый файл. Предположение, что файл является базовым файлом если и только если вывод file file_name содержит фразу "ELF 64-разрядный файл x86-64 ядра LSB".
  4. Канал это к sudo xargs rm

Но я не знаю, как ступить три в тот список.

3
задан 21 October 2015 в 21:47

3 ответа

Я закончил тем, что делал его сам в 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()

Отредактированный для использования основной.

0
ответ дан 1 December 2019 в 23:02

Я использовал Linux каждый начиная с Hardy Heron, и я наткнулся на этот сценарий строки, который удалит файлы дампа ядра чисто и безопасно. Я не помню, где я первоначально нашел его, но это работает отлично. Введите следующую строку как суперпользователь, конечно:

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

Вот именно. Очень простой и с надлежащей заменой может использоваться для удаления/tmp и/var/tmp файлов. Атрибут-atime является переменным, таким образом, можно решить, сколько дней файлов Вы хотите сохранить или нет. Всегда пробуйте простые решения сначала.

0
ответ дан 1 December 2019 в 23:02

Объединяя два ответа:

find / -type f -name core -atime  -exec file {} \; | grep "ELF 64-bit LSB core file x86-64".
0
ответ дан 1 March 2020 в 09:03

Другие вопросы по тегам:

Похожие вопросы: