web-dev-qa-db-ja.com

Ubuntu Linuxでは、mandbが継続的に(明らかにバックグラウンドで)実行されているのは正常ですか?

私の機関ではUbuntu Linuxノードにアクセスできます。ノードはグループ間で共有されますが、通常、この特定のノードを使用するのは私だけです。

このノードの8つのCPUすべてで並列に計算を実行しています。計算は実行されますが、topを使用してアクティブなプロセスを表示すると、ユーザーmanおよびコマンドmandbを示す追加のプロセスが表示されます。このmandbコマンドは、topを見るたびに実行されているようであり、かなりの量のCPUパワー(6 %CPU)およびメモリ(2.5 %MEM)、topによると、.

私がインターネットを見て回っているとき、それは次のようです:

mandbは、通常は人が保守するインデックスデータベースキャッシュを初期化または手動で更新するために使用されます。

では、なぜこのノードでmandbが常に実行されるのですか? (他のノードのtopによれば、私は所属機関のクラスター内の他のノードにはこの問題はありません。)私は---なので、なぜmandbは常に実行する必要があるのでしょうかない現在マニュアルを見ていますか?

このプロセスは、killを使用して安全に終了できるファントムプロセスである可能性がありますか?

12
Andrew

mandbが継続的に実行されるのは異常です。インストールされたmanページのインデックスの更新や、フォーマットされたmanページのキャッシュの構築やトリミングなどのメンテナンスタスクを実行するには、通常、mandbcron ジョブで1回実行します。毎日のジョブは数秒で実行されるはずです。manページがたくさんあり、ディスクが遅い場合は、おそらく数分です。それよりも長くジョブが実行される場合は、何か問題があります。

6%のCPUは高くありませんが、プロセスはディスクI/Oを実行している可能性があります。クラスタノードのメモリの2.5%が高音に聞こえます。ジョブが正しく構成されておらず、本来あるべきでない場所を探しているか、mandbプログラムにバグがあるか、ハードウェア障害が原因でmandbがスタックしている可能性があります。

Cronスクリプトは/etc/crontabまたは/etc/cron.*/*で見ることができます(正確な場所はディストリビューションによって異なります。/etc/cron.daily/man-dbおよび/etc/cron.weekly/man-dbはおそらく場所です)。 mandbが何を呼び出したかを確認するには、プロセスをさらに詳しく調べます。pstree | lessを実行してmandbプロセスを検索します。 ps ww 12345(12345は問題のプロセスのPIDです)を実行すると、完全なコマンドラインが表示されます。

これは自分で診断できるかもしれませんが、root権限なしでは修正できません。 root権限がある場合は、mandbプロセスを安全に強制終了できます(rootになる方法に応じて、コマンドSudo pkill mandbまたはsu -c 'pkill mandb'を使用します)。いずれの場合も、システム管理者に連絡して症状を説明してください。可能なすべての情報を提供します(どのプログラムがmandbを呼び出したのか、どの引数を使用したのかなど)。

これはハイゼンバグであり、mandbの最近のバージョンで修正されている可能性があります。これは、壊れたマンページ、ファイルシステムのトラバーサル順序、および非常に遅い完全な再構築に変わるmandbの増分再構築(1500万ページフォールトなど、Rustの回転に数分かかる)に関係しています。

トラブルシューティングを行う場合は、次を実行します。

Sudo mandb --no-purge --debug

また、--createありまたは--no-purgeなしでmandbを実行しないでください。次に、最新バージョンであることを確認し、cjwatsonで確認できるバグを報告します。

一方、問題を解消したい場合は、次のコマンドを実行します。

echo 'man-db man-db/auto-update boolean false' |Sudo debconf-set-selections

これにより、man-db cronjob(毎日実行)とdpkgトリガー(パッケージのインストール時に実行)が無効になります。

2
Tobu

私はcronスクリプトを確認しました。これは、manインデックスを更新し、マニュアルの検索を高速化し、毎日実行し、安全に終了できるコマンドにすぎませんでした。

気に入らない場合は、chmod -x /etc/cron.daily/man-dbで無効にしてください。

2
daisy