Why 'nobody' always starts a new `find` program that always consume my memory?
$ 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
...
This job always start automatically and consumes my memory. Even after I kill
it, it will starts several hours later.
What's that job?
EDIT
Note: the pid is different from the above because I killed the above one, wait for several hours, then the second one comes.
$ 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)
This is what it look like in a graphical tool:
Solution 1:
As you can see from the process tree, this command is run by updatedb
, which updates the database for the locate
command. The locate command stores this data so that it can give results near instantaneously compared to other means such as find
itself. The relevant cron job is /etc/cron.daily/locate
, as can be seen from the GUI tool. It seems you're using locate
instead of mlocate
. mlocate
is supposed to do a better job of being resource-efficient. So try installing mlocate
first:
sudo apt-get install mlocate
See also: Can I disable updatedb.mlocate?