web-dev-qa-db-ja.com

なぜ「誰も」が常に私のメモリを常に消費する新しい「find」プログラムを開始するのですか?

$ ps -elf | grep
...
0 D nobody   27320 27319  2  90  10 - 353471 sleep_ 07:54 ?       00:02:19 /usr/bin/find / -ignore_readdir_race ( -fstype NFS -o -fstype nfs -o -fstype nfs4 -o -fstype afs -o -fstype binfmt_misc -o -fstype proc -o -fstype smbfs -o -fstype autofs -o -fstype iso9660 -o -fstype ncpfs -o -fstype coda -o -fstype devpts -o -fstype ftpfs -o -fstype devfs -o -fstype mfs -o -fstype shfs -o -fstype sysfs -o -fstype cifs -o -fstype lustre_lite -o -fstype tmpfs -o -fstype usbfs -o -fstype udf -o -fstype ocfs2 -o -type d -regex \(^/tmp$\)\|\(^/usr/tmp$\)\|\(^/var/tmp$\)\|\(^/afs$\)\|\(^/AMD$\)\|\(^/alex$\)\|\(^/var/spool$\)\|\(^/sfs$\)\|\(^/media$\)\|\(^/var/lib/schroot/mount$\) ) -Prune -o -print0                          
...

このジョブは常に自動的に開始され、メモリを消費します。 kill itの後でも、数時間後に開始されます。

その仕事は何ですか?

編集

注:pidは上記のものとは異なります。なぜなら、私は上記のものを殺し、数時間待ってから、2番目のものが来るからです。

$ pstree -psl
|-anacron(25920)---sh(25929)---run-parts(25930)---locate(26343)---updatedb.findut(26348)-+-frcode(26358)
|                                                                                        |-sort(26357)
|                                                                                        `-updatedb.findut(26356)---su(26387)---sh(26402)---find(26403)

これは、グラフィカルツールでは次のようになります。

enter image description here

8
Yishu Fang

プロセスツリーからわかるように、このコマンドはupdatedbによって実行され、locateコマンドのデータベースを更新します。 locateコマンドは、findなどの他の手段と比較してほぼ瞬時に結果を提供できるように、このデータを保存します。 GUIツールからわかるように、関連するcronジョブは/etc/cron.daily/locateです。 locateの代わりにmlocateを使用しているようです。 mlocateは、 resource-efficient であるというより良い仕事をすることになっています。最初にmlocateをインストールしてみてください:

Sudo apt-get install mlocate

参照: pdatedb.mlocateを無効にできますか?

6
muru