每隔一段时间在我使用 ssh 连接的计算机上,我会不小心输入“cat largefile.txt”,然后我的屏幕会在接下来的 10 分钟内开始显示文本。我总是在屏幕会话中工作,所以我目前的解决方案是退出然后重新登录,因为当我退出时它可以快 100 倍,它会在我需要的短时间内完成再次输入我的密码。
有没有更好的办法?要么涉及我在屏幕会话中的事实?或者一种在 SSH 中执行此操作的方法?
什么不起作用:
我有一个在屏幕会话(游戏服务器)中运行的 Java 应用程序,我希望能够编写一个脚本来定期向它发送命令(可能使用 cron),但我不确定如何发送命令到正在运行的屏幕会话。
这可能吗?由于我不仅向屏幕发送更多 shell 命令,而且将文本放入正在运行的 Java 控制台,这一事实可能会变得复杂。
screen 的一个很好的功能是它能够将键盘快捷键分配给称为“类”的组。使用bind -c,您可以将该快捷方式分配给特定类,并且绑定command -c <class>到一个键允许您选择该类。这允许多层键盘快捷键。例如,我用x键来选择一个类专用的常用命令。通过在它们自己的类中拥有这些启动器快捷方式,可以使用助记键而不必担心与正常的键绑定集冲突。有什么办法可以复制这个功能tmux吗?
# from my .screenrc
bind -c execute o screen -t imap 10 offlineimap.sh -o
bind -c execute m screen -t mpd ncmpcpp
bind -c execute w screen -t vw vimwiki
# ... more application launchers
bind x command -c execute
Run Code Online (Sandbox Code Playgroud)
用法:prefixx进入启动器键类,我将所有应用程序键盘快捷键都放在这里。
我正在从 MacOS(优胜美地)到 iTerm2(每晚 3.0.20161031)在 linux 机器(RHEL 6.8)上通过 ssh 工作。在远程服务器上,我在屏幕上工作(屏幕版本 4.00.03)。
编辑:以下所有内容都适用于突出显示文本并尝试使用 CMD+C、CMD+V 进行复制/粘贴
前几天由于标准安全更新原因重新启动了远程服务器。从那时起,远程屏幕中的复制粘贴就一团糟,我不知道出了什么问题。
如果我在笔记本电脑上打开一个新的 iTerm2 会话,我可以像往常一样用鼠标突出显示复制和中键粘贴文本。
如果我通过 ssh 进入远程机器并尝试从初始命令行提示符复制/粘贴某些内容,则一切正常。
如果我重新连接到我的屏幕并启动一个新的子屏幕并尝试复制/粘贴某些内容,则一切正常。
如果我登录到具有类似设置的类似远程服务器,请在该机器的屏幕中进入 emacs -nw并尝试复制/粘贴,一切正常。
但是,当我登录到此服务器并连接到正在运行的屏幕时,比如 ipython 或 emacs(在终端模式下),这是我一直工作的方式,鼠标突出显示/中键单击粘贴方案失控了。直到本周,它才能正常工作。
从我重新连接的屏幕内(我使用我在之间来回翻转的子屏幕):
在 emacs 中突出显示和中键单击什么都不做(目前,虽然我认为之前它的行为与下面相同。 编辑:确实如此。ipython 和 emacs 中的行为相同,并且显然绑定在一起)。
例如,在 ipython 中,如果我突出显示一些文本然后单击中键,粘贴的实际上是突出显示内容下方的某些行数(确切数字发生变化)中的文本,例如:
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
Run Code Online (Sandbox Code Playgroud)如果我突出显示“介绍和概述”并在python命令行上单击鼠标中键,则粘贴的是“关于'对象',u的详细信息”
直到本周,这一切都正常进行;我可能已经在例如 emacs 中调整了一些设置,以使鼠标能够正常工作。据我所知,我的机器上没有任何变化。但我对复制粘贴动态的理解是,它将是我的所有系统,而不是远程服务器。但我只在这个远程服务器的屏幕上看到了问题。
关于这里可能出现什么问题的任何想法?
现在我正在 GNU 屏幕中运行一个进程。屏幕以命令开头,screen -dmS screenname附加以screen -r screenname. 一个进程在 screen 会话中启动,并在一段时间后被终止。
当里面的进程结束时,我如何让屏幕终止?
注意:我不喜欢循环,所以我正在寻找替代方法。有时我会以一个& exit跟随它的方式开始这个过程,但是如果我kill -9 pid在这个过程中使用它就永远不会执行。