有没有办法让 GNU Screen 在它被附加时检测它并在它被附加时执行我拥有的 shell 脚本?这样做的原因是我想保持 X11 转发的显示变量正确,但我需要检测屏幕何时重新连接到另一台计算机以触发我的脚本。
谢谢。
我在 Mac OSX 终端应用程序 (bash) 中运行屏幕。
这是 screenrc (从这里得到的):
$ cat ~/.screenrc
termcapinfo xterm* ti@:te@
startup_message off
defutf8 on
shelltitle "$ |what?" # make screen assign window titles automatically
hardstatus alwayslastline
hardstatus string '%{= kw} [ %{= kb}%H%{= kw} ][%= %{= kw}%?%-Lw?%{= kW}%n*%f %t%?%?%{= kw}%?%+Lw%?%?%= ][ %{r}%l%{w} ]%{w}[%{r} %m/%d/%y/ %C %A %{w}]%{w}'
$
Run Code Online (Sandbox Code Playgroud)
可以看出,我确实有一行将当前进程名称显示为屏幕中的标题:
shelltitle "$ |what?" # make screen assign window titles automatically
Run Code Online (Sandbox Code Playgroud)
但在屏幕内我只看到“什么?” (默认)而不是进程名称。这表明“$”不起作用。
我错过了什么?“$ |something-else”是如何工作的?
我目前正在运行几个项目,我想在不关闭和重新打开所有应用程序的情况下在它们之间切换。有没有办法用一些类似屏幕的应用程序来做到这一点?到目前为止,唯一的方法是切换登录用户,但我想避免这种情况。我们可以假设 linux 机器,没有内存限制。
当在 OS X 中使用 GNU Screen(可能也与 Linux 一起使用)并使用垂直分屏时,您如何仅在完整终端的一侧复制粘贴文本?
是不是不能做人们所接受的事情,或者是否有一个脚本/函数可以粘贴每行的第一个或最后一个 80 个字符或类似的东西?
(如果重要的话,我从 git 存储库为我的 OS X 10.7 安装了最新的 GNU Screen...)
我决定尝试 tmux 作为 GNU 屏幕替代品,想知道是否有一种方法可以像 xterm 一样使用鼠标滚动?
可以通过在 tmux 中使用Shift+启用原生 xterm 滚动PageUp
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
Run Code Online (Sandbox Code Playgroud)
但这对鼠标不起作用。我有选择
setw -g mouse-mode on
Run Code Online (Sandbox Code Playgroud)
在我的 tmux.conf 中,但这会导致 tmux 复制模式。和
setw -g mouse-mode off
Run Code Online (Sandbox Code Playgroud)
鼠标滚动根本不起作用。
是否可以在 tmux 中启用本机 xterm 鼠标滚动?
我想在终端上使用本地回滚,同时使用 gnu 屏幕。那是因为我的网络连接速度非常慢,所以使用屏幕的回滚非常慢。本地回滚要好得多。
这有效,在我的 .screenrc 中使用“termcapinfo xterm* ti@:te@”。
但是,鼠标映射到屏幕的“向上”/“向下”光标键,而不是映射到我的本地终端滚动。为什么?当 screen 不在远程 ssh 会话中运行时,使用鼠标滚动就可以了。但似乎 gnu screen 以某种方式告诉我的本地终端只向它发送鼠标滚轮命令,而忽略它们本身?
我在 gnome-terminal 中运行 byobu,在 ubuntu 12.04 64 位下。并尝试复制屏幕缓冲区。
即按 F7,byobu 进入“复制模式”,然后按空格键标记屏幕文本。
问题是,如何在将这些文本复制到屏幕缓冲区后粘贴这些文本?
我正在尝试在 GNU 屏幕会话中使用 vim,但是每当我在屏幕内打开 vim 时,与在 GNU 屏幕外打开 vim 时相比,语法突出显示使用的颜色完全不同。
为什么 vim 在屏幕内打开它时会更改其语法突出显示颜色以及如何修复它?
注意:我在 iTerm2 (OS X) 中使用 spf13-vim。
编辑:这两个图像显示了在普通 bash 中使用 vim 和在屏幕内使用 vim 时的区别:
普通的:

内屏:

我目前正在通过 rc.local 中的此脚本在 Screen 会话中运行 python 脚本:
screen -L -dmS pi python /home/pi/truck/main2.py &
Run Code Online (Sandbox Code Playgroud)
但我希望它通过 systemd 运行,以便在 Python 脚本崩溃时重新启动它。
我尝试在 /systemd/system/myscript.service 中创建一个服务
[Unit]
Description=myscript
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=3
ExecStart=/usr/bin/screen -L -dmS pi python /home/pi/truck/main2.py
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
但它不会在 Screen 会话中运行我的脚本?
如果我得到一个正在运行的屏幕列表,它表明屏幕会话“pi”已死。