首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何查看在另一个shell中执行的命令?

如何查看在另一个shell中执行的命令?
EN

Unix & Linux用户
提问于 2012-11-08 17:45:51
回答 5查看 14.7K关注 0票数 10

是否有一种方法可以观察在另一个shell中正在执行哪些命令?这两个shell都是bash,如果有关系的话,我可以访问根。我不能安装任何额外的软件,我不希望另一个外壳必须做任何特殊的事情,如运行屏幕。

情境:我远程登录到Linux机器上,同事也是。我希望看到她在外壳中运行的命令。我知道我可以使用watchps的一些组合来查看任何运行时间超过一秒的命令,但我不认为这会对非常短的命令有所帮助。

EN

回答 5

Unix & Linux用户

回答已采纳

发布于 2012-11-08 19:35:39

既然你是根,你总是可以strace -f -e execve -p her_bash_pid-f是必要的,因为她的shell将在exec之前分叉一个新进程,但这也意味着您将看到子进程执行的任何内容。

票数 7
EN

Unix & Linux用户

发布于 2012-11-08 18:06:02

如果您的同事可以修改bash的一些历史记录设置,那么您可以从-f /home/user/.bash_history获得这些信息。下面是在每个命令之后,而不是在shell退出时编写.bash_history所需的设置:

代码语言:javascript
代码运行次数:0
运行
复制
export PROMPT_COMMAND="history -a"
shopt -s histappend

不过,我认为屏幕会话是一个“理想的”解决方案。

票数 5
EN

Unix & Linux用户

发布于 2012-11-08 18:23:43

在进行了快速的研究(以及一些思考)之后,我可以给你列出以下可能的选择:

  • 读她的bash_history。但通常只有在注销时才写出来。askubuntu.com有一篇关于改变这种行为的帖子(编辑:@jordanm显然也有相同的想法,并且更快地发布.)。
  • 如果她在物理终端(/dev/ttyX)上,您可以使用程序conspy
  • 让她使用screen。如果你只是想协助而不是监视她,她可能愿意在屏幕内运行她的会话。然后,您可以简单地通过sudo -u herUsername screen -x附加到她的会话。
  • 您可以编写一个shell包装器脚本,将命令记录到您选择的日志文件中。您必须将她的shell设置为该脚本(这只是一个想法,可能有用,也可能不起作用)。
  • 我首先想到的是使用cat /dev/pts/X | tee /dev/pts/X。但是,在尝试之后并不是真正的工作,是一个非常肮脏的解决方案。每个字符只打印到一个附加的终端上(这也是调用tee的原因)。当我尝试的时候,我可以窥探每一个角色。只要有一点想象力,你就能猜出她想干什么.
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/55204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档