답변:
예. 크론에서 비활성화하거나 제공하는 패키지를 제거 할 수 있습니다 updatedb
. Red Hat 시스템에서는 제거하기 전에 어떤 것이 필요한지 결정하는 단계를 거칩니다.
먼저 프로그램이 디스크에서 어디에 있는지 확인하십시오.
$ type updatedb
updatedb is /usr/bin/updatedb
다음은 어떤 패키지가 제공되는지 확인하십시오 updatedb
.
$ rpm -qf /usr/bin/updatedb
mlocate-0.26-3.fc19.x86_64
필요한 것이 있는지 확인하십시오 mlocate
.
$ rpm -q --whatrequires mlocate
no package requires mlocate
필요한 것은 없으므로 패키지를 제거 할 수 있습니다.
$ yum remove mlocate
/var/lib/mlocate
있습니까?
패키지 관리자를 사용하여 제거하십시오. 다른 패키지가 사용하는 경우 패키지 종속성에 의존해야하므로 알 수 있습니다.
와 및 서버가 Nginx
있으며 없이도 아름답게 작동합니다 .php-fpm
mysql
updatedb
aptitude remove
에서는 aptitude why
, 또는을 사용할 수 있습니다 aptitude search '?installed ?recommends(mlocate)'
. 이것들은 모두 요구 사항 외에도 권장 사항 종속성을 보여줍니다. apt는 기본적으로 권장 패키지를 설치하므로 필수 패키지로 간주되지는 않지만 매우 유용한 하위 기능을 제공하기 위해 의존 할 수 있습니다.
나는 이것을 말함으로써 사지에서 멀리 가지 않을 것이지만, 문제를 일으키는 것은 업데이트되지 않았을 것입니다. 아마 당신이 원하지 않는 다른 것, 당신이 당신의 '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 스타일보다 실행 속도 테스트를 실행하기 때문에이 질문을하는 경우 요청하십시오. 다른 현명한 도구를 활용하십시오.
locate
색인이 생성되었는지 확인할 수 없으므로 유용하지 않습니다. 파일이 오래되면 fzf
퍼지 검색합니다.
아치 리눅스에서 적어도, 그 나타납니다 man-db.timer
및 updatedb.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.target
systemctl
불행히도, 현재로서는 생각할 수있는 간단한 해결 방법이 없습니다.
이 패키지가 있다고 가정합니다 man-db
, mlocate
그들이 원하는 / 유용한 솔루션이 아닐 것이다 제거 : 시스템에 설치된 유지 될 필요가 / 원하고 있습니다.
또한 이것을보십시오 : https://www.reddit.com/r/archlinux/comments/36fqzh/updatedbservice_and_mandbservice_increases_boot/
rpm
또한 있습니다--whatrecommends
. Fedora는 지난 몇 년 동안 개념으로 생각하기 시작했습니다. (데비안 / 우분투 쪽이 "권장"뿐만 아니라 "필수"를 설치하도록 기본 설정 한 후).