我想知道如何在屏幕会话中执行命令。我搜索了一下,发现了这个:
screen -S nameofscreen -X stuff "command"
Run Code Online (Sandbox Code Playgroud)
当我输入此命令时,命令会在屏幕内输入,但不会执行。所以我的问题是如何使用此命令按 Enter 键。
我典型的开发环境是在全屏终端(通常是 gnome-terminal)中使用 vim 运行 GNU 屏幕会话。我遇到的问题是,当单击 vim 中超出终端第 223 个字符的字符时,鼠标指针无法正确解释。
我已经尝试了另一个问题的解决方案(添加set ttymouse=sgr到我的.vimrc),这解决了直接在终端中运行 vim 的问题,但在屏幕会话中使用 vim 时,鼠标的限制仍然存在。
因此,我一直试图找到一些关于 GNU 屏幕如何在高位实际工作的信息,而无需实际阅读源代码,但我一直无法这样做。
即使终端会话关闭,屏幕也能保持不变,它有什么作用?它是否作为守护进程或其他东西运行,并且调用 screen 的每个人都只是连接到它,然后它找到要附加到的伪 tty 会话,或者它是否执行完全不同的操作?
我正在尝试编写一个 bash 脚本来创建一个带有一组特定窗口的屏幕(软件)会话,以及cd每个窗口的特定目录。
这是我到目前为止的脚本:
#!/bin/bash
killall screen;
screen -AmdS work;
screen -S work bash -c "cd myDir";
Run Code Online (Sandbox Code Playgroud)
问题是我似乎无法更改该会话中的目录。运行这个脚本后,我运行$ screen -r,当前目录仍然是我的默认目录(~/)。
(我已经尝试将cd命令更改为,touch myFile并且在运行脚本后文件就在那里)
我用谷歌搜索了这个问题,但从未发现任何对我的特定情况有用的东西。
所以,我想弄清楚的是某个正在运行的命令的 PID,这样我就可以在必要时终止它。我知道可以通过键入echo $!So来获取命令的 PID
my_command & echo $!
应该给我PID。但事实并非如此,我想我知道为什么:我的命令如下:
screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
它screen首先打开一个分离的,然后输入命令,以便它被执行并继续在后台运行。这样echo显示给我的 PID是错误的。我猜它向我显示了 PIDscreen -d -m -S Radio /path/to/folder -f frequency -r path/to/song而不是在由 screen 创建的新终端中运行的命令的 PID。
但是还有另一个问题:当我screen -ls在终端中运行时,在后台运行的命令没有显示!我相当确定它正在运行,因为 Pi 的 CPU 使用率始终保持在 25%(而不是通常的 0% 或 1%),并且当我输入时,ps au我实际上可以看到命令和 PID。
所以现在我打电话给社区:关于如何在新终端中找到特定命令的 PID 有什么想法吗?我正在编写一个bash脚本,因此必须可以通过代码获取PID。完美的命令是将 PID 存储在变量中!
问题尽管有一个答案被接受但未解决:我们正努力让Jonah的代码起作用.
问题:将(1)的代码更改为(2)
我知道线程.我希望能够在Screen中运行以下代码
代码(1)
cat ~/.vimrc | pbcopy (1)
Run Code Online (Sandbox Code Playgroud)
代码(2)
cat ~/.vimrc > /tmp/pbcopy.pipe (2)
Run Code Online (Sandbox Code Playgroud)
我尝试解决问题: 将以下代码放到.zshrc中
function pbcopy() { "(cat \"$1\")" > /tmp/pbcopy.pipe }
Run Code Online (Sandbox Code Playgroud)
我明白了
cat masi | pbcopy
pbcopy: command not found: (cat "")
cat: masi: No such file or directory
Run Code Online (Sandbox Code Playgroud)
你如何在屏幕内使用pbcopy?
我意外删除了/var/run/screen/S-root/25771.pts-0,当我再次尝试运行屏幕时
screen bash ...
Run Code Online (Sandbox Code Playgroud)
它报道:
/var/run/screen/S-root/25771.pts-0: No such file or directory
我该如何恢复?
我正在运行Linux 2.6.38-10服务器#46-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux,我有以下问题:
1)我登录ssh
2)我启动一个屏幕(使用屏幕命令)
3)我启动一个java程序"java -jar ../mlJar.jar> eval1"并将输出传递给eval1
4)我分离屏幕(Ctrl + A,Crtl + D)
5)除非我注销,否则程序将正常运行
6)注销后,当java应用程序尝试打开文件时,会抛出以下异常
java.io.FileNotFoundException: /path/to/my/file.arff (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at java.io.FileReader.<init>(FileReader.java:41)
at gr.auth.ee.lcs.utilities.InstancesUtility.openInstance(InstancesUtility.java:74)
at gr.auth.ee.lcs.data.representations.complex.ComplexRepresentation.<init>(ComplexRepresentation.java:834)
at gr.auth.ee.lcs.data.representations.complex.StrictMultiLabelRepresentation.<init>(StrictMultiLabelRepresentation.java:456)
at gr.auth.ee.lcs.implementations.SequentialUCS.<init>(SequentialUCS.java:165)
at gr.auth.ee.lcs.implementations.SequentialUCS.createNew(SequentialUCS.java:196)
at gr.auth.ee.lcs.FoldEvaluator.evaluate(FoldEvaluator.java:153)
at gr.auth.ee.lcs.implementations.global.AllMlTypes.main(AllMlTypes.java:69)
Exception in thread "main" java.lang.NullPointerException
at gr.auth.ee.lcs.FoldEvaluator.loadFold(FoldEvaluator.java:211)
at gr.auth.ee.lcs.FoldEvaluator.evaluate(FoldEvaluator.java:155)
at gr.auth.ee.lcs.implementations.global.AllMlTypes.main(AllMlTypes.java:69)
这可能意味着发生这种情况是因为JVM"丢失"了它对该文件夹的访问权限.
任何人都可以帮助解决问题.在其他版本的Linux中,这不会发生.Linux中是否有可以对此进行排序的配置?
谢谢!
我正在使用名为screen的终端程序,它可以在一个"真实"终端中创建几个"虚拟终端"(这里的"虚拟"和"真实"这两个词是非常相对的,"真正的"终端可以是一个konsole标签,如同好吧,不一定是tty1-tty6).问题是我无法在一个屏幕内创建超过40个窗口.当我试图创造更多,屏幕说"没有更多的窗户." 经过一些谷歌搜索后,我发现这是由一个名为MAXWIN的东西控制的,但我没有找到任何有关如何修改这个MAXWIN的信息.如何在单个屏幕内增加最大窗口数?
我用Debian 6"挤".
PS我明白我可以在几个"真实"(在上面的意义上)终端中运行几个屏幕,但是这使得使用多个显示模式(屏幕-x)变得更加困难.
我想将stdout和stderr分开,并能够在程序执行期间并排看到它们。
我知道的所有解决方案都需要将一个或两个流重定向到文件。
我的解决方案:
tail -f将这两个文件重定向到单独的终端窗口或tmux / screen中。这需要3个终端-1个用于命令调用,另外2个用于预览。taif -f单独的终端。这需要2个终端-1个用于命令调用和stdout,一个用于stderr预览。两种解决方案都不方便,因为您必须运行多个命令并在终端之间切换。
有没有更好的解决方案来解决这个问题?有办法避免重定向到文件吗?