相关疑难解决方法(0)

如何在另一个 bash 会话中查看正在运行的进程的输出?

当我在本地工作时,我已经在远程机器上运行了一个脚本。我可以以同一用户身份通过​​ SSH 连接到机器,并查看在ps.

$ ps aux | grep ipcheck
myuser  18386  0.0  0.0  18460  3476 pts/0    S+   Dec14   1:11 /bin/bash ./ipchecker.sh
Run Code Online (Sandbox Code Playgroud)

它只是在本地会话上输出到标准输出(我从./ipchecker.sh本地终端窗口运行,没有重定向,没有使用screen等)。

无论如何,我可以从 SSH 会话中查看此运行命令的输出(不停止它)吗?

到目前为止,我发现的最好的方法是使用,strace -p 18386但我在屏幕上看到成群的文本,它太详细了。我可以停下来strace,然后筛选输出,发现文本带打印到标准输出,但它非常长且令人困惑,很明显,当它停止时,我可能会错过一些东西。我想找到一种方法来实时查看脚本输出,就像我在本地工作一样。

任何人都可以改进吗?显而易见的答案是通过重定向或在screen会话等中重新启动脚本,这不是关键任务脚本,所以我可以这样做。相反,我认为这是一个有趣的学习练习。

bash process io-redirection

302
推荐指数
7
解决办法
48万
查看次数

如何否认正在运行的进程并将其关联到新的屏幕外壳?

我在 SSH shell 上有一个正在运行的程序。我想暂停它并在我回来时能够取消暂停它的执行。

我想到的一种方法是将其所有权转移到屏幕外壳,从而使其在那里运行。

是否有不同的方式进行?

ssh gnu-screen terminal job-control disown

181
推荐指数
8
解决办法
13万
查看次数

系统管理员是否有可能窃听他/她用户的终端?

当登录到一台机器时,我可以从w. 作为系统管理员,我是否可以在用户不知情的情况下窃听此终端?换句话说,我希望看到在这个终端上所做的一切都作为我自己终端上的输出。

请注意以下事项:

  • 这不是用于监视用户活动的实际用例:我知道有系统审计工具可以做到这一点。我只是好奇是否可以做到。
  • 我知道这个问题,它似乎没有涵盖我要问的问题,因为所有解决方案都表明存在侵入性(用户会知道我在做什么)或产生太多噪音(strace解决方案)。接近的一种解决方案是建议使用gdb. 但这只能让我看到另一个终端的标准输出。

我试过的

我从我的终端试过这个:

tee /dev/pts/user_pts </dev/pts/user_pts
Run Code Online (Sandbox Code Playgroud)

这使我可以在用户键入时看到用户在另一个伪终端中键入的每个字符。问题是,每隔几个字符,它就会“跳过”:它会在一个终端设备上显示一个流氓字符,而不是另一个。它还可以防止从用户的伪终端设备执行任何命令。我不确定为什么会发生这种情况以及是否有办法改进它。

我想看什么

USER TERMINAL        |    MY TERMINAL
$ echo "Test"        |    # slick_command_here
Test                 |    echo "Test"
$                    |    Test
Run Code Online (Sandbox Code Playgroud)

administration io-redirection

17
推荐指数
2
解决办法
2416
查看次数

复制 TTY0 文本

我有一些输出TTY1,我认为可能会提供有关为什么我的最后一个 GUI 会话冻结的线索(CtrlAltBackspace能够让我回到终端并重新加载 GUI)。

但是,我似乎无法找到一种复制屏幕上文本的方法,但是(我希望)还没有从文件/设备中消失。有什么建议?

linux tty clipboard

4
推荐指数
1
解决办法
1036
查看次数