1: lsof可以找出哪个进程正在写哪个文件
lsof /tmp/
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 2425 root cwd DIR 202,3 1400832 2457601 /tmp/
bash 4556 root cwd DIR 202,3 1400832 2457601 /tmp/
lsof 19283 root cwd DIR 202,3 1400832 2457601 /tmp/
lsof 19288 root cwd DIR 202,3 1400832 2457601 /tmp/
2: ps auxfw可以找出pid对应进程的具体信息
ps auxfw|grep 2425
root 2425 0.2 0.0 66212 1792 pts/2 Ss 08:52 0:02 | \_ -bash
root 21214 0.0 0.0 61192 748 pts/2 S+ 09:10 0:00 | \_ grep 2425
3: 结合1,2可以找出哪个进程在狂写文件
lsof /tmp/|grep -v ‘PID‘|awk ‘{print $2}‘| while read line;do
ps auxfw|grep "$line";
done
4: 有时候进程写下文件就退出了,所以lsof一运行还无法找出,这时可以加个while运行一段时间就可以找出来了。
while true;do
lsof /tmp/inputruntime20160629|grep -v ‘PID‘|awk ‘{print $2}‘| while read line;do
ps auxfw|grep "$line";
done;
sleep 1;
done