一位朋友使用远程机器运行了一个脚本,该脚本通过 SSH 连接到我的机器,并运行了驻留在我的机器上的以下 python 脚本:
while (1):
....print "hello world"
(该脚本只是连续打印‘hello world’)。
我现在已经登录到我的机器了。我如何才能看到我朋友正在运行的脚本的输出?
如果有帮助的话,我可以“发现”我的朋友正在使用的脚本:
me@home:~$ ps aux | grep justprint.py
**friend 7494 12.8 0.3 7260 3300 ? Ss 17:24 0:06 python TEST_AREA/justprint.py**
friend 7640 0.0 0.0 3320 800 pts/3 S+ 17:25 0:00 grep --color=auto just
我应该采取什么步骤才能在屏幕上看到“hello world”消息?
答案1
如果他正在使用screen
,那么您可以将会screen -r
话附加到您的会话或screen -x
共享屏幕会话。
否则会稍微困难一些。你可能必须先更改权限/dev/pts/3
,然后再执行tail -F /dev/pts/3
。
还有另一个选项,您可以使用ttysnoop
它。http://www.linuxhelp.net/guides/ttysnoop/
答案2
使用ssh -t
将使 WoLpH 的屏幕建议起作用。
ssh -t <remote_host> screen
给我一个关于 remote_host 的屏幕。
答案3
假设您使用不同的用户帐户登录。简而言之,您不能。如果可以,那将是一个安全问题。您的常规用户帐户将无权读取其他进程的进程、pty 和套接字。
Screen 可能会有所帮助,但必须编译为支持多用户,然后正确安装和配置(使用 ACL 等)。如果事先完成这些操作,那么您可以使用 screen。
例如从客户端:ssh -t friend@host screen -r me/[session]
另一个选项是 ttysnoop,但同样需要一些预配置。
真正的问题是“你为什么要这么做?”你想要实现的最终目标是什么?可能还有其他更好的方法。