updatedb를 비활성화 할 수 있습니까? 결코 사용하지 않으며 locate서버에는

updatedb전혀 필요? 나는 결코 사용하지 않으며 locate서버에는 수십만 개의 파일이있는 경향이 있습니다.이 파일은 일반적으로 updatedb를 오랫동안 실행하고 MySQL 및 / 또는 다른 소프트웨어에 필요한 I / O를 소비합니다.

cron에서 제거하고 모든 것이 작동 할 것으로 기대할 수 있습니까? (서버에서 발견되는 일반적인 소프트웨어 : linux, cpanel, mysql, apache, php 등).



답변

예. 크론에서 비활성화하거나 제공하는 패키지를 제거 할 수 있습니다 updatedb. Red Hat 시스템에서는 제거하기 전에 어떤 것이 필요한지 결정하는 단계를 거칩니다.

  1. 먼저 프로그램이 디스크에서 어디에 있는지 확인하십시오.

    $ type updatedb
    updatedb is /usr/bin/updatedb
    
  2. 다음은 어떤 패키지가 제공되는지 확인하십시오 updatedb.

    $ rpm -qf /usr/bin/updatedb
    mlocate-0.26-3.fc19.x86_64
    
  3. 필요한 것이 있는지 확인하십시오 mlocate.

    $ rpm -q --whatrequires mlocate
    no package requires mlocate
    
  4. 필요한 것은 없으므로 패키지를 제거 할 수 있습니다.

    $ yum remove mlocate
    

답변

구성 파일 /var/www을 편집하여 파일이 많은 디렉토리의 스캔을 비활성화 할 수 있습니다 ( 예 🙂 /etc/updatedb.conf. 실제로 비활성화하려면 cronjob을 제거하십시오.


답변

패키지 관리자를 사용하여 제거하십시오. 다른 패키지가 사용하는 경우 패키지 종속성에 의존해야하므로 알 수 있습니다.

와 및 서버가 Nginx있으며 없이도 아름답게 작동합니다 .php-fpmmysqlupdatedb


답변

나는 이것을 말함으로써 사지에서 멀리 가지 않을 것이지만, 문제를 일으키는 것은 업데이트되지 않았을 것입니다. 아마 당신이 원하지 않는 다른 것, 당신이 당신의 ‘liking’으로 구성하지 않은 백업 응용 프로그램 또는 프로필 / 시스템 그룹 구조의 일부 보안 문제.

시스템 메모리 할당이 사용자에 대해 작동하는 것처럼 보이는 또 다른 경우는 하나의 ‘가상 파일 시스템을 알지 못하는’시나리오입니다. 그리고 그것은 문제의 바보입니다. 말하자면 ‘가상 불법 범죄 폭탄’입니다.

ext 4 시스템에서 fat32로 포맷 된 USB 드라이브에서 자주 발생합니다. 그런 다음 csh 쉘을 man login shell로 잘못 설정 한 zfs 시스템으로 전송합니다. 디스크에 “읽기 파일 전용 USB 파일 시스템”문제의 가상 재귀를 생성하고 드라이브를 fat32에서 vFat로 포맷 / 마운트하여 불량 블록 섹터를 생성하고 디렉토리를 최대로 디렉토리를 추출 (가상 이동)합니다. 무한 루프를 일으키는 상위 디렉토리 레벨! 디렉토리가 실제로 상위 레벨의 계층 구조에 있지 않습니다. csh 원인의 구문이 원인입니다. * 참고 : 드라이브는 zfs c-shell 로그인 시스템을 제외한 모든 시스템에서만 읽습니다.

updatedb를 완전히 비활성화하려면 메모리 할당 및 ‘롤백 효과’와 관련하여 잘못된 논리를 만들 수 있습니다. 원하지 않는 시점에서 롤백 한 적이 있다면 명령 줄을 2 시간 동안 사용할 때의 의미를 알 수 있습니다. 작업 처리를 메모리에 할당하지 않았기 때문에 스크립팅은 Fubar-ed입니다.

이제 두 개 이상의 물리적 프로세서 (예 : 듀얼 코어 이상)와 ddr3 램이 있으면 괜찮습니다. 무거운 그래픽을 실행하지 않는 한,이 경우 해당 전원로드로 인해 문제가 발생하는 경우 업데이트 된 목록이 목록에서 마지막입니다. 어떤 이유로 시스템에 대한 움직임을 위장하려고하는 경우 updatedb를 비활성화하는 대신 다른 방법으로 시스템을 변경할 수 있으며 실제로 updatedb는 시스템에 가장 적합한 ‘아무것도하지 않는’행동을 강화합니다.

솔직히 바이너리 파일 / usr / bin / updatedb의 크기와 OS와의 신호 / 시스템 통신 아키텍처를 고려하고 Bash가 10 배 크기 인 쉘 대시 또는 애쉬의 비동기 호출을 고려하면 비동기 호출은 시스템에서 매우 저렴합니다.

작성한 순차 스크립트를 실행하여 쉘에 로그인하고 관리자 인 경우 (예 : sudo) 다음 명령을 실행하십시오.

~$ sudo bash
:~# ./script.sh

그런 다음 스크립트 내에서 로컬 변수를 작성하려고합니다 (updatedb는 시스템 특권, AKA 루트 / 스도 / 휠 필요).

#! /bin/sh
# Create local variables
UPD="updatedb"

echo "Beginning Execution of sequence "

이 경우 시퀀스는 사용자가 작성하고 기본 스크립트에서 변수로 실행중인 다른 쉘 스크립트에서 STDOUT / STDIN을 사용하거나 cdrom에서 업로드 / 다운로드 / 포트하는 개인 또는 비즈니스 관리자 패키지가 있다고 가정합니다. USB 또는 그 크기가 매우 크며 개인용 설치 스크립트가있는 경우 계속 업데이트하십시오. 터미널 셸이 열리면 기본 응용 프로그램 인스턴스입니다. 다른 응용 프로그램은 비동기 적으로 / 실행될 수 있지만 업데이트 된 b는 전체 시스템 / 컴퓨팅 수요 측면에서 가장 비용이 적게 듭니다. 여러 번, 특히 lxdm Desk Enviro와 Lxterm에서 (단, 매우 빠름) 단독으로는 아닙니다. 내 스크립트에 updatedb를 추가하지 않고 시스템에서 파일이 존재하지 않거나 나사로 인해 발생한 오류가 발생했습니다. 그리고 나는 무엇을 좋아한다!

쉘은 관리하는 시스템보다 빠릅니다. 보증합니다!

이 경우 updatedb 변수를 호출하여 그림과 같이 이전 시퀀스를 메모리에 고정합니다.

echo "Updating local database "

$UPD

echo "Exiting script two "

exit

무슨 말인지 알 겠어? Andrew Tanenbaum 스타일보다 실행 속도 테스트를 실행하기 때문에이 질문을하는 경우 요청하십시오. 다른 현명한 도구를 활용하십시오.


답변

아치 리눅스에서 적어도, 그 나타납니다 man-db.timerupdatedb.timer기본 (예 : 다음과 같은 파일이 존재)으로 설정되어 있지만,이 no installation config (WantedBy, RequiredBy, Also, Alias settings in the [Install] section, and DefaultInstance for template units). This means they are not meant to be enabled using systemctl. [...](출력은 systemctl enable {man-,update}db.timer).

파일 시스템에 존재하는 심볼릭 링크는 다음과 같습니다.
/usr/lib/systemd/system/multi-user.target.wants/man-db.timer
/usr/lib/systemd/system/multi-user.target.wants/updatedb.timer

단순히 제거하는 문제입니다.
그러나, 그들은의 업그레이드 / 각 다시 / 설치시 다시 것 man-db, mlocate각각 패키지로 제공된다.

ArchLinux의 경우 가능한 해결 방법은 pacman이 제거 할 수있는 후크를 갖는 것입니다.
그러나 업그레이드를 통해 활성화하려는 경우에도 그러한 각 이벤트에서 제거됩니다.
이 경우 타이머를 활성화하려는 경우 후크를 비활성화 할 수 있습니다.
그러나 타이머를 활성화하면 기본 .timer장치 파일에 systemctl enable타이머 를 직접 구성하는 섹션이 없으므로 패키지를 다시 설치 / 설치 / 업그레이드 할 때만 적용됩니다 . 타이머를 활성화하고 비활성화하려면 링크를 제거하려면
수동 ln -s ../man-db.timer /usr/lib/systemd/system/multi-user.target.wants/man-db.timer또는 ln -s ../updatedb.timer /usr/lib/systemd/system/multi-user.target.wants/updatedb.timer명령이 필요합니다.

허용 할 섹션을 /etc/systemd/system/{man-,update}db.timer제공 WantedBy=multi-user.target하여 사용자 지정 단위를 재정의 [Install]할 수 systemtl enable|disable있지만 링크 /usr/lib/systemd/system/multi-user.target.wants/{man-,update}db.timer는 여전히 다시 설치 / 업그레이드 할 때 생성되어 효과적으로 다시 활성화 할 수 있습니다 .timer.

systemctl mask man-db.timer updatedb.timer타이머를 마스크하기 위해 실행할 수도 있습니다 . 해당 서비스를 시작
하기 위해 수동으로 실행 systemctl start man-db.service updatedb.service하는 것이 가능하더라도 사용자가 원하는 이유에 관계없이 타이머를 수동으로 시작할 수는 없습니다. systemd 는 마스크 된 유닛을 나타 내기 위해 심볼릭 링크로 파일을 교체해야하기 때문에이
해결 방법은 /etc/systemd/system/{man-,update}db.timer원하는 / 필요한 경우 존재하는 사용자 지정 유닛 파일 을 재정의하는 것을 허용하지 않습니다 /dev/null.

마스킹은 가장 방해가되지 않는 솔루션으로 보입니다. 업그레이드 할 때마다
수동으로 제거 /usr/lib/systemd/system/multi-user.target.wants/{man-,update}db.timer하고 수동 활성화 / 비활성화 /etc/systemd/system/{man-,update}db.timer를위한 [Install]섹션 이있는 단위 파일 을 재정의 하는 것이 좋습니다.WantedBy=multi-user.targetsystemctl

불행히도, 현재로서는 생각할 수있는 간단한 해결 방법이 없습니다.
이 패키지가 있다고 가정합니다 man-db, mlocate그들이 원하는 / 유용한 솔루션이 아닐 것이다 제거 : 시스템에 설치된 유지 될 필요가 / 원하고 있습니다.

또한 이것을보십시오 : https://www.reddit.com/r/archlinux/comments/36fqzh/updatedbservice_and_mandbservice_increases_boot/