我最近开始使用GNU Screen,但遇到了一个非常烦人的问题.
在任何屏幕窗口中如果我按下左箭头键或退格键,当在提示符处没有输入任何内容时,屏幕似乎刷新,导致轻微的闪烁.在提示符下键入一些文本后使用退格键或左箭头不会导致闪烁(至少在到达提示符中的第一个字符之前).
有人见过这个吗?
我以"-d -m"开头的任何会话都不接受"-X stuff [...]"命令,除非我已经连接到屏幕至少一次.没有错误消息,命令无法通过.
问题是我从cron作业启动会话,无法从cron内部附加到屏幕.
重复的步骤
$ screen -m -d -S mydaemon bash
$ screen -S mydaemon -X stuff "`printf "exit\\r"`"
$ screen -ls
32456.mydaemon (Detached)
$ screen -r -S mydaemon
$ ^a d
$ screen -S mydaemon -X stuff "`printf "exit\\r"`"
$ screen -ls
No Sockets found in /var/run/screen/S-user
Run Code Online (Sandbox Code Playgroud)
^ ad表示按Ctrl + a然后按d.
版本
CentOS release 5.5 (Final)
Screen version 4.00.03 (FAU) 23-Oct-06
Run Code Online (Sandbox Code Playgroud) 我有一个Jar文件,我想通过屏幕运行,虽然当我尝试打开Perl脚本时,一切似乎都运行良好,虽然当我这样top做时,我没有在列表中看到该过程,但如果我工作正常将命令复制粘贴到SSH会话中...
这是我正在使用的代码:
start.pl
# !/usr/local/bin/perl
system("cd /var/server/; screen java -Xmx1024M -Xms1024M -jar jarfile.jar > /dev/null 2>&1 &");
有人能指出这是为什么吗?
如何将多个命令绑定到 gnu-screen 中的单个键?我想结合这两个映射
bind c copy
bind b eval "writebuf" "exec sh -c 'xsel --clipboard < /tmp/screen-exchange'"
Run Code Online (Sandbox Code Playgroud)
到单个一键映射。如何才能做到这一点?
有没有人知道有关 gnu-screen 的高级配置/脚本编写内容的好教程?
提前致谢,克里斯
如何启动可作为Root-User和Default-User访问的Screen?因为现在当我使用以下命令启动Screen as Default-User时:
screen -dmS test java $JAR nogui
Run Code Online (Sandbox Code Playgroud)
执行命令并登录Root-User并尝试使用后
screen -x test
Run Code Online (Sandbox Code Playgroud)
它会说,它不存在,因为屏幕是用户绑定的,AFAIK.
那么有一种方法可以将屏幕共享给所有用户吗?所以我可以通过任何用户的屏幕名称附加屏幕.
我正在使用Linux Screen Utility在我的Putty终端中打开2个以上的窗口.通常在运行屏幕会话时a
Ctrl+A Ctrl+W
Run Code Online (Sandbox Code Playgroud)
给我们一个屏幕底部的窗口列表.
我有两个问题:
我想知道是否有办法永久保持此菜单在屏幕的底部.
如何给每个窗口命名?理想情况下,当我们执行
屏幕-S screen_name
screen_name应出现在菜单中.我只能找到
0.csh 1.csh 2.csh
在菜单中.这可以改为
0.debug_screen 1.editor 2.games
Run Code Online (Sandbox Code Playgroud) 我有一台Linux服务器使用Kerberos进行用户身份验证,AFS用于用户住宅.当我使用可转发的Kerberos票证登录机器时(我想)PAM也负责我的AFS身份验证,因此我在登录后自动访问我的AFS主页.
假设我登录,然后创建一个屏幕会话并在其中启动一个应用程序.然后我分离我的屏幕会话,并从机器注销.我的Kerberos票证会自动丢弃,因此我在后台运行的屏幕会话以及在其中运行的应用程序无法访问我的AFS主页.这是正常的,它很好.
下次登录机器时,如何使用新的Kerberos票证"提供"我已运行的屏幕会话及其中运行的应用程序(流程本身),并使其能够再次访问我的AFS主页而无需重新启动它?
我试图以screen一种特殊的方式运行(我正在制作一个不寻常的脚本),但它无法正常工作.
我的剧本:
#!/bin/bash
#startserver
set -m
cd /home/USER/SERVER_FOLDER/
screen -Dm -S SERVER java -Xmx768M -Xms768M -jar ./JARFILE.jar $@ &
PID=$!
echo $PID > ./.mc.pid
(sleep 0.5; sudo /usr/bin/oom-priority $PID) &
(wait $PID; startserver_after) &
screen -r $PID.SERVER
Run Code Online (Sandbox Code Playgroud)
/usr/bin/oom-priority是我做的一个命令,它设置了pid的优先级-16.
startserver_after是java退出后我想要运行的命令.
这是行不通的,因为我无法恢复screen.查看screen联机帮助页:
-D -m This also starts screen in "detached" mode, but doesn't fork a new process. The command exits if the session terminates.
Run Code Online (Sandbox Code Playgroud)
这应该意味着:
pid的screen应该是相同的 …我刚从GNU屏幕切换到tmux 2.0,却惊讶地发现我不再能够使用鼠标滚轮和Shift-PgUp/ 滚动回终端历史记录Shift-PgDn。
对我来说,这是一个重大问题。如何使用tmux 进行终端滚动?
PS。我知道我能做到set-window-option -g mode-mouse on通过使用鼠标滚轮滚动TMUX缓冲区- 不是在终端缓冲区。此设置的另一个副作用是,我无法再按通常的方式进行鼠标选择-我必须Shift用鼠标左键按下。
IOW:如何告诉tmux将所有鼠标事件传递给终端仿真器?
PPS。Ubuntu 15.10; gnome-terminal; 滚动条在右侧清晰可见,但在screen其下方指示仅显示了缓冲区的一小部分,而在tmux其下方则指示没有可滚动的内容。
当我尝试恢复屏幕会话时
$ screen -r name
Run Code Online (Sandbox Code Playgroud)
我明白了
WriteMessage: Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?(理想情况下能够恢复屏幕,但至少在无法恢复的情况下将其删除)
发生这种情况的原因可能是SSH连接中断了.