【问题标题】:Identify last active Linux bash process识别最后一个活动的 Linux bash 进程
【发布时间】:2020-03-19 14:10:51
【问题描述】:

在 Linux(例如 RHEL 6)上,我如何在给定主机上识别最后进行某些计算的 pid?更准确地说:在我的 59 个 bash shell(我喜欢虚拟桌面)中,我想确定我最近执行命令的终端。

我尝试在 /proc/ 中查找我的一些 bash 终端,看看是否有例如命令历史文件或带有可用日期戳的虚拟文件。什么都没找到。

【问题讨论】:

  • 我需要更多信息。您能否详细说明您对“一些计算”的理解?它是在 59 个正在运行的 bash 实例之一中启动的最后一个命令吗?
  • ... 还是最后一个完成的命令? pid that last did some computationterminal where I latest executed a command。有两点需要澄清: _ 1. 你想要 terminal PID 还是想要 bash PID? _ 2. 你想要开始最新命令的bash/终端还是最后完成的bash/终端命令运行了吗?

标签: linux bash terminal process pid


【解决方案1】:

您可以定义一个PROMPT_COMMAND,它在每次 bash 显示提示时执行,即在每个命令之后。在提示命令中,将当前 PID 写入文件。在查找完成最新命令的 bash 进程时,从该文件中检索其 PID。

在你的~/.bashrc 添加

export PROMPT_COMMAND='echo $$ > /tmp/last_active_bash_pid'

当您重新启动所有终端或在每个终端中获取文件(执行. ~/.bashrc)时,效果就会发生。

您可以使用watch -n0.3 cat /tmp/last_active_bash_pid 以交互方式对此进行测试,以显示 PID。

【讨论】:

  • 您可能还需要将终端名称与 PID 一起回显以回答问题 v.gr。使用命令tty
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多