是否有一种方法可以观察在另一个shell中正在执行哪些命令?这两个shell都是bash,如果有关系的话,我可以访问根。我不能安装任何额外的软件,我不希望另一个外壳必须做任何特殊的事情,如运行屏幕。
情境:我远程登录到Linux机器上,同事也是。我希望看到她在外壳中运行的命令。我知道我可以使用watch
和ps
的一些组合来查看任何运行时间超过一秒的命令,但我不认为这会对非常短的命令有所帮助。
发布于 2012-11-08 19:35:39
既然你是根,你总是可以strace -f -e execve -p her_bash_pid
。-f
是必要的,因为她的shell将在exec
之前分叉一个新进程,但这也意味着您将看到子进程执行的任何内容。
发布于 2012-11-08 18:06:02
如果您的同事可以修改bash的一些历史记录设置,那么您可以从-f /home/user/.bash_history获得这些信息。下面是在每个命令之后,而不是在shell退出时编写.bash_history所需的设置:
export PROMPT_COMMAND="history -a"
shopt -s histappend
不过,我认为屏幕会话是一个“理想的”解决方案。
发布于 2012-11-08 18:23:43
在进行了快速的研究(以及一些思考)之后,我可以给你列出以下可能的选择:
conspy
。screen
。如果你只是想协助而不是监视她,她可能愿意在屏幕内运行她的会话。然后,您可以简单地通过sudo -u herUsername screen -x
附加到她的会话。cat /dev/pts/X | tee /dev/pts/X
。但是,在尝试之后并不是真正的工作,是一个非常肮脏的解决方案。每个字符只打印到一个附加的终端上(这也是调用tee
的原因)。当我尝试的时候,我可以窥探每一个角色。只要有一点想象力,你就能猜出她想干什么.https://unix.stackexchange.com/questions/55204
复制相似问题