提供更多 IQ 来筛选实际运行任务的最佳实践

提供更多 IQ 来筛选实际运行任务的最佳实践

如果我登记入住屏幕当前正在运行的任务(ctrl/a + "),我得到这个:

 Num Name                                                                                                                
   0 -bash  
   1 -bash  
   2 -bash  

...这是正确的,通常在我的所有屏幕窗口中,bash 正在运行。然而,这并不是我想看到的。我想在该窗口中查看实际执行的命令。它可以是任何东西,例如 ssh-ing、rsync-ing 或运行构建脚本等:

 Num Name                                                                                                                
   0 ssh to@this 
   1 rsync this./ [email protected]:/path
   2 make world

我目前最好的想法是,任何时候如果我执行一个新命令,bash 都应该以某种方式与屏幕进程对话,了解此时发生的情况。例如,作为 unix 管道上的数据报消息。也许这并不容易实现。

有什么东西至少可以得到一些类似的东西吗?

答案1

简短回答:

  • 将以下行添加到您的$HOME/.bashrc4

    case "$TERM" in
        screen*) PROMPT_COMMAND='printf "\ek\e\\\\"'
    esac
    
  • 添加以下行$HOME/.screenrc

    shelltitle '$ | bash'
    

解释:

screen具有特定于 shell 的启发式方法,通过将窗口的名称设置为"<search pattern>|<window name>"并将<ESC>k<ESC>\序列作为提示的一部分来启用2

Screen 将使用<ESC>k<ESC>\清除上一个命令名称并为下一个命令做好准备。当从 shell 接收到换行符时,将搜索提示符的末尾。screen将抓取匹配字符串后的第一个单词并将其用作命令名称。

用于PROMPT_COMMAND='printf "\ek\e\\\\"'设置<ESC>k<ESC>\为提示的一部分。并使用shelltitle子命令(title此处不起作用)通过添加来设置默认窗口标题

shelltitle '<end of prompt>|<default window name>'

$HOME/.screenrc2 5

加载新配置后windowlist应显示正在运行的命令。


2.screen动态标题:https://www.gnu.org/software/screen/manual/html_node/Dynamic-Titles.html#Dynamic-Titles
4.类似帖子:https://superuser.com/questions/244299/gnu-screen-how-to-update-dynamically-the-title-of-a-window
5.shelltitle例子:https://www.gnu.org/software/screen/manual/html_node/Title-Screenrc.html
额外:
3. 关于PROMPT_COMMANDhttps://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html

相关内容