Sudo updateb `/var/lib/mlocate/mlocate.db'가 드라이브 오류로 인해 잠겼습니다. 영구적으로 수정하는 방법은 무엇입니까?

Sudo updateb `/var/lib/mlocate/mlocate.db'가 드라이브 오류로 인해 잠겼습니다. 영구적으로 수정하는 방법은 무엇입니까?

이 4.20.3 Arch 시스템의 BTRFS 포맷 디스크에는 /남은 여유 공간이 없습니다. 그 이유는 mlocate 때문인 것으로 밝혀졌습니다.

# du -h --exclude=Volumes -- * 2>/dev/null | sort -hr | head -2
11G var
9.6G    var/lib/mlocate

질문업데이트됨: '/var/lib/mlocate/mlocate.db' 임시 파일을 열 수 없습니다.허용되는 답변에서는 미리 추가할 것을 제안 sudo하지만 아무 것도 변경되지 않습니다.

# sudo updatedb
updatedb: `/var/lib/mlocate/mlocate.db' is locked (probably by an earlier updatedb)

/var/lib/mlocate에 모든 디스크 공간을 사용하는 임시 파일이 있는 것 같습니다.

# ls -lh var/lib/mlocate/
-rw-r----- 1 root locate 1.1M Oct 21 00:00 mlocate.db
-rw------- 1 root root   9.6G Dec 30 19:46 mlocate.db.PRvfsw

근본 원인이 .timer보류 중인 업데이트 작업일 수 있습니까?

# systemctl status updatedb.timer
* updatedb.timer - Daily locate database update
   Loaded: loaded (/usr/lib/systemd/system/updatedb.timer; static; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-21 16:05:10 CEST; 2 months 9 days ago
  Trigger: n/a

임시 대용량 .db 파일도 restart삭제 되지 않고 여전히 반환됩니다 .stopupdatedblocked

updatedb아직 실행 중인 프로세스 가 있는 것 같습니다 .

# ps -ef | grep updatedb
root      3249     1 99 Oct22 ?        213573-14:47:11 /usr/bin/updatedb

프로세스를 종료할 수 있다는 것을 알고 있습니다. 근본 원인은 USB 스틱 결함일 가능성이 높습니다.

# ls /Volumes/RM_GUE__
ls: cannot access '/Volumes/RM_GUE__/'$'\001\020': Input/output error
ls: cannot access '/Volumes/RM_GUE__/)': Input/output error

다음에 USB 스틱이 실패하면 /다시 가득 차게 됩니다.

데이터베이스 구성 파일 업데이트

updatedb.conf옵션은 유용한 필터링 옵션을 제공하지 않습니다.

  • 경로별: 파티션이 손상된 후 파티션 이름을 추측할 수 없습니다.
  • 파일 시스템별: 이 경우 VFAT는 손상되었지만(읽기 전용), 앞으로 어떤 파일 시스템이 손상될지 예측할 수 없습니다.

updatedb.timer예를 들어 가능한 실행 기간을 제한하거나 입력/출력 오류가 있는 디스크를 건너뛰거나 LimitFSIZE=파일 크기를 제한하여 이 문제를 완전하고 영구적으로 해결하려면 어떻게 해야 합니까 ?

답변1

mlocate(에 대한 문서 참조)는 man mlocate으로 연결되고 updatedb차례로 다음과 같이 말합니다.

특정 옵션에 의해 수정된 PRUNE_BIND_MOUNTS, 및 변수는 PRUNEFS(5)에 자세히 설명되어 있습니다 PRUNENAMES.PRUNEPATHSupdatedb.conf

문서( man updatedb.conf)를 읽고 파일을 보면 /etc/updatedb.conf요구 사항을 충족할 수 있는 두 가지 가능한 옵션이 표시됩니다.

PRUNEFSupdatedb(8)로 검색 하면 안 되는 공백으로 구분된 파일 시스템 유형 목록(/etc/mtab에서 사용됨) . 파일 시스템 유형 일치는 대소문자를 구분하지 않습니다.

PRUNEPATHS(8) 로 검색하면 안 되는 updatedb공백으로 구분된 디렉터리 경로 이름 목록입니다 . 각 경로 이름은 (1) 보고 디렉토리의 정확한 형식이어야 합니다 locate.

USB 스틱 및 기타 이동식 미디어가 항상 아래에 마운트되어 있는 경우 해당 디렉터리를 설정 /Volumes에 추가할 수 있습니다 . 내 Debian 시스템에서는 다음과 같은 결과가 발생합니다.PRUNEPATHS/etc/updatedb.conf

PRUNEPATHS="/tmp /var/spool /media /var/lib/os-prober /Volumes"

또는 USB 스틱이 항상 FAT 또는 NTFS인 경우 이러한 파일 시스템 유형을 지정된 제외 세트에 추가할 수 있습니다 PRUNEFS.

관련 정보