ablog

不器用で落着きのない技術者のメモ

プロセスがファイルに読み書きしてる内容を覗き見する

確認方法

ls -l /proc/<PID>/fd
  • tail で見てみる
tail -f /proc/<PID>/fd/21

実行例

$ while :; do date; sleep 5; done > foo.log &
[1] 23801
$ ps -elf|egrep [2]3801
1 S oracle   23801 22232  0  76   0 - 16525 wait   11:03 pts/2    00:00:00 -bash
0 S oracle   23813 23801  0  76   0 - 14732 -      11:03 pts/2    00:00:00 sleep 5
$ ls -l /proc/23801/fd
total 0
lrwx------ 1 oracle oinstall 64 Mar 20 11:03 0 -> /dev/pts/2
l-wx------ 1 oracle oinstall 64 Mar 20 11:03 1 -> /home/oracle/foo.log
lrwx------ 1 oracle oinstall 64 Mar 20 11:03 2 -> /dev/pts/2
lrwx------ 1 oracle oinstall 64 Mar 20 11:03 255 -> /dev/pts/2
$ tail -f /proc/23801/fd/1
Mon Mar 20 11:03:04 JST 2017
Mon Mar 20 11:03:09 JST 2017
Mon Mar 20 11:03:14 JST 2017
Mon Mar 20 11:03:19 JST 2017
Mon Mar 20 11:03:24 JST 2017
Mon Mar 20 11:03:29 JST 2017
Mon Mar 20 11:03:34 JST 2017
Mon Mar 20 11:03:39 JST 2017
Mon Mar 20 11:03:44 JST 2017
Mon Mar 20 11:03:49 JST 2017
Mon Mar 20 11:03:55 JST 2017