私の機関ではUbuntu Linuxノードにアクセスできます。ノードはグループ間で共有されますが、通常、この特定のノードを使用するのは私だけです。
このノードの8つのCPUすべてで並列に計算を実行しています。計算は実行されますが、top
を使用してアクティブなプロセスを表示すると、ユーザーman
およびコマンドmandb
を示す追加のプロセスが表示されます。このmandb
コマンドは、top
を見るたびに実行されているようであり、かなりの量のCPUパワー(6 %CPU
)およびメモリ(2.5 %MEM
)、top
によると、.
私がインターネットを見て回っているとき、それは次のようです:
mandb
は、通常は人が保守するインデックスデータベースキャッシュを初期化または手動で更新するために使用されます。
では、なぜこのノードでmandb
が常に実行されるのですか? (他のノードのtop
によれば、私は所属機関のクラスター内の他のノードにはこの問題はありません。)私は---なので、なぜmandb
は常に実行する必要があるのでしょうかない現在マニュアルを見ていますか?
このプロセスは、kill
を使用して安全に終了できるファントムプロセスである可能性がありますか?
mandb
が継続的に実行されるのは異常です。インストールされたmanページのインデックスの更新や、フォーマットされたmanページのキャッシュの構築やトリミングなどのメンテナンスタスクを実行するには、通常、mandb
を cron ジョブで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トリガー(パッケージのインストール時に実行)が無効になります。
私はcronスクリプトを確認しました。これは、manインデックスを更新し、マニュアルの検索を高速化し、毎日実行し、安全に終了できるコマンドにすぎませんでした。
気に入らない場合は、chmod -x /etc/cron.daily/man-db
で無効にしてください。