모든 코어 덤프에서 호출되는 정리 스크립트를 실행하려고 합니다. 먼저 코어 파일의 내용을 다른 파일에 쓴 다음 가장 오래된 파일 10개를 정리해 보았습니다.
그러나 xargs rm
이 명령은 core_dump를 통해 스크립트를 호출할 때 작동하지 않습니다. 스크립트를 단독으로 실행하면 rm이 작동합니다.
/proc/sys/kernel/core_pattern:
|core_cleanup.sh /tmp/cores/core.%t
.sh 파일 정리
#!/bin/sh
cat > "$1"
ls -tr /tmp/cores/ | head -10 | xargs rm
파일을 삭제하기 위해 다음을 수행하면 작동합니다. 하지만 가장 오래된 x 파일만 삭제하면 됩니다.
#!/bin/sh
cat > "$1"
rm /tmp/cores
누군가 이것에 대해 밝힐 수 있습니까?
답변1
ls -tr /tmp/cores
파일의 전체 경로는 나열되지 않고 기본 이름만 나열됩니다.
시도 ls -tr /tmp/cores/* | ...
해봐.
그러나 그 모든 것이 필요하지는 않습니다. 모든 파일 이름이 이 형식 core.%t
( %t
= unix 덤프 시간)이므로 간단히 glob을 사용하여 정렬할 수 있습니다. 또한 파일 하나만 추가한 후 파일 10개를 삭제하는 것은 의미가 없습니다. 일련의 단계를 거치면 디렉터리에 더 이상 파일이 없게 됩니다.
#! /bin/sh
cat > "$1"
# remove the oldest file if there are more than 100
cleanup(){ test "$#" -gt 100 && rm "$1" }
cleanup /tmp/cores/*