Linux "위치" 캐시를 업데이트하는 방법

Linux "위치" 캐시를 업데이트하는 방법

찾기의 캐시/인덱스를 업데이트하는 방법은 무엇입니까? 새 패키지를 설치했는데 파일이 아직 색인화되지 않은 것 같습니다. 그렇다면 인덱서를 트리거하려면 어떤 명령을 제출해야 합니까?

저는 현재 debian jessie(테스트)를 개발 중입니다: Linux mbpc 3.13-1-amd64 #1 SMP Debian 3.13.7-1 (2014-03-25) x86_64 GNU/Linux 사용

답변1

명령은 다음과 같습니다:

sudo updatedb

바라보다man updatedb자세한 내용은.

답변2

OSX에서는 다음과 같습니다.sudo /usr/libexec/locate.updatedb

다음과 연결될 수 있습니다:sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb

표준 유닉스 명령에 대한 심볼릭 링크를 생성해야 한다는 것은 어리석은 것처럼 보이지만 실제로는 그렇습니다.

답변3

대답은 다음과 같습니다.

sudo updatedb

updatedb엄밀히 말하면 cron 작업도 설치되어 있는 경우 명령줄에서만 cron 작업을 실행하는 것은 거의 좋은 생각이 아닙니다. Unix 스타일에 따라 cronjob에는 잠금 조항과 updatedb독립 실행형 명령으로 처리되지 않는 많은 구성이 포함됩니다.

위치 데이터베이스에 자주 업데이트가 필요한 경우 특정 호스트에 대한 올바른 크론 작업을 식별하고 수동으로 실행하는 것은 확실히 노력할 가치가 있습니다.

관리자에 따라 cronjob이 updatedb다른 위치에 숨겨질 수 있습니다. 따라서 cron 작업을 찾으려는 간단한 무차별 시도는 다음과 같습니다.

( sudo crontab -l > /tmp/crontab.root;
  ( echo /tmp/crontab.root; ls -1d /etc/*cron* /etc/*cron*/* ) \
  | tr '\n' '\0' \
  | xargs -0 -r -e grep -nH -e updatedb;
  rm -f /tmp/crontab.root
) 2>/dev/null

내 Ubuntu 시스템 중 하나에 다음 결과가 표시됩니다.

/etc/cron.daily/mlocate:5:[ -x /usr/bin/updatedb.mlocate ] || exit 0
/etc/cron.daily/mlocate:21:flock --nonblock /run/mlocate.daily.lock $IONICE /usr/bin/updatedb.mlocate

따라서 이 경우 위치 데이터베이스를 업데이트하는 올바른 명령은 다음과 같습니다.

sudo /etc/cron.daily/mlocate

보다 체계적인 접근 방식은 locate및 를 제공하는 패키지를 식별하는 것입니다 updatedb.

예를 들어, apt/dpkg 패키징을 사용하는 운영 체제에서는 어떤 유형의 찾기가 설치되어 있는지 확인할 수 있습니다.

dpkg -S locate | grep /bin/

내 경우에는 다음과 같습니다.

mlocate: /usr/bin/updatedb.mlocate

어떤 크론 작업(있는 경우)이 담당하는지 확인하려면 다음을 실행하세요.

dpkg -L mlocate | grep cron

내 경우에는 다음과 같이 표시됩니다.

/etc/cron.daily
/etc/cron.daily/mlocate

데이터베이스를 업데이트하려면 루트로 cron 작업을 실행하세요.

sudo /etc/cron.daily/mlocate

cronjob이 없고 updateb 자체가 작동하지 않는 경우 다음을 사용하여 설치된 버전을 찾아보세요.

dpkg -L mlocate | grep /bin/

반품:

/usr/bin/mlocate
/usr/bin/updatedb.mlocate

고쳐 쓰다

원샷 systemd 서비스를 사용하여 매일 Updateb를 실행하는 또 다른 방법이 있습니다.데이터베이스 서비스 업데이트,mlocate-updatedb.service기다리다. 서비스는 해당 타이머에 의해 트리거됩니다.데이터베이스 타이머 업데이트,mlocate-updatedb.timer. 다음은 저장소에서 찾은 샘플 서비스 파일입니다.

[Service]
Type=oneshot
ExecStart=/usr/bin/updatedb
IOSchedulingClass=idle

이 경우에는 호출만 하기 는 하지만 ionice -c 3 /usr/bin/updatedb, 업데이트 중에 시스템 유지관리자가 도입한 변경 사항에 대해 서비스 파일을 다시 확인할 필요 없이 서비스를 시작하고 올바른 환경에서 실행되고 있는지 확인하는 것이 더 좋습니다.

sudo systemctl start updatedb.service

패키지 파일 목록을 확인하는 것 외에도 다음 명령을 사용하여 서비스를 확인할 수도 있습니다.

systemctl list-unit-files | grep 'updatedb\|locate'

답변4

"locate" 패키지는 일반적으로 매일 실행되고 찾기 데이터베이스를 업데이트하는 cronjob과 함께 제공됩니다.

cronjob을 수동으로 실행하여 찾기 데이터베이스를 강제로 업데이트할 수 있습니다.

데비안에서는 다음과 같이 할 수 있습니다:

sudo /etc/cron.daily/locate

시스템 성능과 검사 중인 파일의 양에 따라 실행하는 데 다소 시간이 걸릴 수 있습니다.

관련 정보