我在我的服务器中运行rake任务作为一个单独的进程,并在STDOUT上打印跟踪该脚本的进度。
在SSH连接中,我的互联网连接重置。当我重新建立与服务器的连接时,我发现该进程仍在运行。我想听听它的STDOUT输出。我有进程ID。
我该怎么做?
答案 0 :(得分:1)
将来,请考虑screen。这个精彩的小工具可以容纳大量的虚拟终端,让您轻松地从一个虚拟终端切换到下一个(甚至不使用鼠标),但最好的是,如果您断开连接,虚拟终端将继续运行,直到您重新连接并恢复屏幕会话。
开始一个屏幕会话:
screen
要故意分离屏幕会话,以便断开连接并使其保持运行状态:
C-a C-d
重新挂接分离的屏幕会话
screen -dr
还有很多东西,但这足以让你开始。
答案 1 :(得分:1)
retty
应该做你想做的事。 http://pasky.or.cz/dev/retty/
答案 2 :(得分:0)
我没有一个Linux VM可以用来测试它,但你可以用gdb连接到进程,open(2)
一个新的文件描述符用作标准输出,然后{{1}那到fd 1。
答案 3 :(得分:0)
strace -p $pid_of_process_you_want_to_see_stdout_of 2>&1| sed -re 's%^write\(1,[[:blank:]](.*),[[:blank:]]*[0-9]+\)[[:blank:]]*=[[:blank:]]*[0-9]+%\1%g'
从这里被盗: