バックグラウンド実行中のプロセスの出力を得る【Linux】
Nov. 12, 2019, 2:20 a.m. edited Dec. 21, 2019, 5:15 a.m.Dockerで重いプログラムを動かしてCtrl+p&Ctrl+qでデタッチして、もう一度アタッチしたときに「そのプロセスの出力見たいんだけどっ!!」となったので調べた。
How to view the output of a running process in another bash session?にあった。strace
コマンド1を使って、
$ strace -p<プロセスのPID> -s9999 -e write
でいける2。例えば、
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 130 106 93 01:44 ? 00:16:20 python3 heavy_program.py
と目的のプロセスのPID(今回は130
)を得る。すると、
$ strace -p130 -s9999 -e write
strace: Process 130 attached
write(2, "hogehoge", 8) = 8
write(2, "foobar", 6) = 6
といった具合に表示される。strace
の終了はCtrl+cでいけた(straceがデタッチするだけでpython3 heavy_program.py
は終了しなかった)。
(write(2, ..., 8) = 8
の2
はわからないけれど、8
は文字数だった)
ちなみに、対象のプロセスが存在しないときは
strace: attach: ptrace(PTRACE_SEIZE, 131): No such process
といわれる。
Tags
- #Python (26)
- #量子力学 (23)
- #量子情報 (21)
- #Unity (11)
- #Outer Wilds (11)
- #Mac (9)
- #数学 (8)
- #AoE2 (8)
- #Linux (6)
- #Quantum Zoo (6)
- #意識 (5)
- #シミュレーション (5)
- #NumPy (5)
- #Bash (5)
- #相対論 (4)
- #Docker (4)
- #Android (4)
- #Qiskit (4)
- #Rust (3)
- #PyO3 (3)
- #GitHub (3)
- #Django (2)
- #情報理論 (2)
- #LaTeX (2)
- #AR (2)
- #Git (2)
- #iOS (2)
- #C++ (2)
- #正規表現 (2)
- #電磁気学 (1)
- #Google Drive (1)
- #Overleaf (1)
- #Let's Encrypt (1)
- #ポケモン (1)
- #AdMob (1)
- #Autoya (1)
- #docopt (1)
- #SymPy (1)
- #AWS (1)
- #Twitter (1)
- #URP (1)
- #iMovie (1)
- #論文 (1)
- #PyTorch (1)
- #C# (1)
- #Vim (1)