/var/spool/abrt/를 지우는 올바른 방법은 무엇입니까?

/var/spool/abrt/를 지우는 올바른 방법은 무엇입니까?

우리는 에서 프로세스를 자동화하고 싶습니다 /var/spool/abrt/.

RHEL 시스템 버전 7.x가 있습니다.

알려진 방법은 다음을 수행하는 것입니다

# systemctl stop abrtd
# systemctl stop abrt-oops

다음 rm 명령을 사용하여 이러한 모든 디렉터리와 파일을 삭제할 수 있습니다.

# abrt-cli rm /var/spool/abrt/*

그럼 서비스 시작

# systemctl start abrtd
# systemctl start abrt-oops

삭제 프로세스를 다음과 같이 단순화하려고 합니다. 10일보다 오래된 디렉터리가 삭제됩니다./var/spool/abrt/

find /var/spool/abrt/  -type d -ctime +10  -exec rm -rf {} \;

/var/spool/abrt/디렉토리를 지우는 것이 좋은 선택입니까?

답변1

내 제안은 다음과 같습니다.

1) 쉘 스크립트 생성/home/yael/purgeabrt.sh

$ cat purgeabrt.sh

#!/bin/bash
set -e
function cleanup()
{
    systemctl start abrtd
    systemctl start abrt-oops
}

trap cleanup EXIT

systemctl stop abrtd
systemctl stop abrt-oops
find /var/spool/abrt/ -type d -ctime +10 -exec abrt-cli rm {} \;
cleanup

2) 스크립트 실행뿌리:

sudo crontab -e

줄 추가:

*/5 * * * * bash /home/yael/purgeabrt.sh

cron5분마다 작업을 실행 하기 위해 .

편집하다:

set -e명령이 0이 아닌 상태로 종료되면 스크립트 실행이 종료됩니다.

trap cleanup EXIT스크립트에 발생할 수 있는 신호를 포착하고 정리 코드를 실행합니다.

노트:스크립트 마지막 줄의 호출은 cleanup불필요(중복)할 수 있지만 코드의 가독성을 향상시킵니다.

답변2

abrt-cli 도구를 사용할 때 서비스를 중지/시작할 필요가 없습니다. 도구에 대한 전체 문서는 다음과 같습니다.https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sect-abrt-cli

또한 abrt-cli 도구를 호출하여 와일드카드 * 대신 /var/spool/abrt 아래의 개별 디렉터리를 삭제할 수 있습니다.

...

메인 편집자! 내 대답의 나머지 부분은 abrt-cli 명령과 함께 find 명령을 사용하려고 시도하므로 완전히 잘못되었습니다. 이 접근 방식에는 많은 문제가 있습니다.

  1. /var/spoo/abrt 아래의 디렉터리 자체에는 많은 하위 디렉터리가 있을 수 있으므로 검색 깊이를 제한해야 합니다.
  2. 디렉토리에 항상 오래된 타임스탬프가 있는 것은 아니며 abrt 서비스는 때때로 일부 오래된 보고서를 처리해야 하므로 find가 항상 모든 오래된 보고서를 캡처하지는 않습니다.

관련 정보