파일 검색(타겟팅) 또는 자동 완성은 어떻게 작동하나요?

파일 검색(타겟팅) 또는 자동 완성은 어떻게 작동하나요?

저는 Windows 사용자이고 Windows에서 왔으며 파일을 검색할 때 필요한 모든 인덱싱과 영원한 대기 시간을 고려하면 그 속도가 놀랍습니다.위치내가 아는 작동 또는 자동 완성 기능은 Linux에서 작동합니다.

백그라운드에서 인덱싱이 수행되고 있나요? 아니면 이를 어떻게 달성하나요? 아직 꽤 깨끗하게 설치되어 있으므로 시간이 지나면 문제가 발생할 수 있지만 Windows에서는 색인화되지 않은 폴더를 검색하려면 몇 초 정도 기다려야 합니다.

답변1

나는 Linux에서 작업을 찾거나 작업(내가 알고 있는)을 자동화하는 것이 얼마나 빠른지 놀랍습니다. ...백그라운드에서 인덱싱이 수행되고 있나요? 아니면 이를 어떻게 달성하나요?

이것은 실제로 완전히 다른 두 가지 질문입니다.

locate/var/lib/slocate/야간 작업에 의해 업데이트되는 색인( slocate 에 저장됨)을 사용하십시오 cron. 이 일은 매일 밤대개현지 시간으로 오전 1시 또는 2시에 실행되며 전체 시스템(연결된 모든 드라이브 포함)에 대한 전체 검사를 수행합니다. 결과 색인은 파일 이름 목록일 뿐입니다.

자동 완성은 쉘에서 처리됩니다. 대부분의 시스템은 작동 방식을 관리하는 스크립트 모음과 마찬가지로 bash이를 사용합니다 . bash-completion( zsh비슷한 이름의 컬렉션이 있으며 대부분의 다른 셸에는 어떤 형태로든 완성 기능이 내장되어 있습니다.) 이 버튼 Tab을 누르면 셸은 입력한 내용을 기반으로 완료해야 할 작업을 정확히 결정하는 스크립트를 실행합니다. 그런 다음 스크립트는 완료되거나 완료되지 않을 수 있는 목록을 생성합니다 $PATH. 이 목록은 현재 디렉터리에 있는 파일 목록일 수도 있고 아닐 수도 있습니다. 또는 locate일반적으로 명령은 .아니요이를 위해 사용됩니다.

답변2

일반적으로 찾기는 cron-job(예: 내 시스템의 /etc/cron.daily/mlocate)을 통해 하루에 한 번 생성된 색인을 사용합니다. 그것은 멋진 일을 하지 않습니다. 기본적으로 일부 최적화와 인덱스 데이터 구조의 구성을 통해 전체 파일 시스템을 살펴봅니다.

쉘은 명령을 완료하기 위해 일부 내부 캐시를 사용할 수 있지만 전역 색인 파일은 사용하지 않습니다. 또한 일반적으로 Unix 커널은 dentry-cache를 유지합니다. 즉, 디렉토리 목록(존재하지 않는 파일에 대한 통계 포함 - 역방향 캐시라고도 함)과 같은 파일 디렉토리 정보를 메모리에 캐시합니다.

관련 정보