質問: updatedbを無効にできますか? updatedbは必要ですか?私はlocateを使用することはなく、私のサーバーには数千万ものファイルが存在する傾向があるため、updatedbは長時間実行され、mysqlやその他のソフトウェアが必要とするi/oを消費します。cronから削除して、すべてが機能することを期待できますか? (私がサーバーで見つけた通常のソフトウェアを意味するすべてによって:linux、cpanel、mysql、apache、phpなど)。
回答: 少なくともarchlinuxでは、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リンクは、再インストール/アップグレード時に引き続き作成され、.timersを効果的に再度有効にします。また、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/