検索のキャッシュ/インデックスを更新するには?新しいパッケージをインストールしましたが、ファイルがまだインデックス化されていないようです。では、インデクサーをトリガーするためにどのコマンドを送信する必要がありますか?
私は現在debian jessie(テスト)を開発しています:Linux mbpc 3.13-1-amd64#1 SMP Debian 3.13.7-1(2014-03-25)x86_64 GNU / Linuxの使用
答え1
答え2
OSXでは、次のようになります。sudo /usr/libexec/locate.updatedb
以下に関連付けることができます:sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
標準のUnixコマンドへのシンボリックリンクを作成する必要があるのは愚かなようですが、実際にはそうです。
答え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システムの1つに次の結果が表示されます。
/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
データベースを更新するには、rootとして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を手動で実行して、検索データベースを強制的に更新できます。
Debian では、次のことができます。
sudo /etc/cron.daily/locate
システムのパフォーマンスとスキャンしているファイルの量によっては、実行に時間がかかることがあります。