우리는 에서 프로세스를 자동화하고 싶습니다 /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
cron
5분마다 작업을 실행 하기 위해 .
편집하다:
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 명령을 사용하려고 시도하므로 완전히 잘못되었습니다. 이 접근 방식에는 많은 문제가 있습니다.
- /var/spoo/abrt 아래의 디렉터리 자체에는 많은 하위 디렉터리가 있을 수 있으므로 검색 깊이를 제한해야 합니다.
- 디렉토리에 항상 오래된 타임스탬프가 있는 것은 아니며 abrt 서비스는 때때로 일부 오래된 보고서를 처리해야 하므로 find가 항상 모든 오래된 보고서를 캡처하지는 않습니다.