Edited at

うっかり起動してしまった時間のかかるプロセスをtmux上に付け替えたい

More than 3 years have passed since last update.

うっかり生のシェル上で時間がかかるプログラムを起動してしまって困ったこと、ありませんか。

こういう時に使えるコマンドに、reptyrがあります。


インストール

Debianなら

$ sudo aptitude install reptyr

多分ubuntuでもこれでおkです。


使い方

$ ps aux|grep hoge

でPIDを調べて、

$ tmux

$ reptyr ほげ

でptyを付け替えられます。


その他

sshが落ちてそのままになったviとかもこれでつけ変わるっぽいです。


追記


ubuntuの場合

$ sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope

しないとptraceシステムコールがうまく動かないって書いてありましたが確かめていません


gdbでttyを付け替える

gdbでデバッグしている時、gdbの出力とコマンドの出力がごっちゃになって鬱陶しいことがままあります。

gdbserverを使うのも一つの手ですが、reptyrでも出力先を変えられるようです。

gdbとは別のターミナルで

$ reptyr -l

Opened a new pty: /dev/pts/ほげ

して新しいptyを開き、gdb上で

$ set inferior-tty /dev/pts/ほげ

とかすると入出力先が変わります。gdbを終了するとreptyrも終了します。

実はこちらもかなり便利でした。(特にpedaとか入れていると出力が長いですし)