2009年 11月 18日

起動済みバックグランドプロセスの標準出力を見るワンライナー

Linux

gdb -p 32514 -batch -n -x =( echo -e "p (int)dup2((int)open(\"/proc/$$/fd/1\", 1), 1)" )

.zshrc にこんなん書いといた (stdout, stderr をどちらも現在見てるシェルでみえるようにする)

function snatch () {
    gdb -p $1 -batch -n -x =( echo -e "p (int)open(\"/proc/$$/fd/1\", 1)\np (int)dup2(\$1, 1)\np (int)dup2(\$1, 2)" )
}

うまくいかない場合がある。なんでだろう……

うまくいかないときはとりえあえず strace -p pid -ewrite