サーバーが非常に遅いことに気づいたので、調査したところ、iotop
奇妙なことに find コマンドが 80 ~ 96% のディスク IO 使用率を使用していることがわかりました。
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
4992 idle nobody 7.82 M/s 0.00 B/s 0.00 % 89.69 % find / ...
コマンド全体は非常に大きくps aux | grep find
、
root 4978 0.0 0.0 49340 2860 ? SN 06:25 0:00 su nobody -s /bin/sh -c /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
nobody 4991 0.0 0.0 4500 684 ? SNs 06:25 0:00 sh -c /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
nobody 4992 9.6 0.1 81004 63996 ? DN 06:25 18:22 /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
iotop
私にとっては、プロセスを終了して2番目のコマンドの開始を見ても非常に疑わしいように見えます
4933 idle root 85.14 M/s 409.77 M/s 0.00 % 75.22 % sort -z
誰かこれが何なのか知っていますか?
PS: システムは Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-210-generic x86_64) です
答え1
これは、updatedb.findutils(1)
パッケージ内に存在するコマンドlocate
。
/etc/cron.daily/locate
システムの日常的なスクリプトから呼び出されるクローンタブ(通常は06時25分に見られる/etc/crontab
)には様々ないくつかのパスとファイルシステムをスキップするオプション:
# Global options for invocations of find(1) FINDOPTIONS='-ignore_readdir_race' # filesystems which are pruned from updatedb database PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf ocfs2" # paths which are pruned from updatedb database PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media /var/lib/schroot/mount" # netpaths which are added NETPATHS="" # run find as this user LOCALUSER="nobody"
find
これらはオプションに変換されますupdatedb.findutils
指示。
ps aux
これらはすべて、で始まるOP のコマンドの内容と一致します-ignore_readdir_race
。