基本上我有一个远程屏幕会话,我希望自动重新附加到..目前我正在使用以下命令(作为 iTerm 书签或别名)
ssh host -t screen -x thesessionname
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果会话因任何原因终止,我希望在下次连接时重新创建它。该-R用于标志screen是几乎完美:
ssh host -t screen -R -S thesessionname
Run Code Online (Sandbox Code Playgroud)
..但是如果会话已经附加,则创建第二个会话(作为-R第一个分离会话的简单查找,如果没有找到,则创建一个新会话)
有没有办法让-R标志也寻找附加的会话,如果thesessionname不存在则只创建一个新的会话?
如果这不容易实现,我怎么能在它死掉时自动重新创建屏幕会话?也许一个通过 cron 运行的脚本寻找命名会话,如果它不存在就创建它?
如何screen用于启动新会话并在该会话中运行命令而不终止该会话?
screen -S myScreenName runSomething
Run Code Online (Sandbox Code Playgroud)
我试过上面的命令,它说
[screen is terminating]
Run Code Online (Sandbox Code Playgroud)
它是否运行了命令然后杀死了屏幕?我希望在运行命令后分离屏幕而不是杀死它。那怎么办呢?
我需要运行脚本,这需要很长时间才能执行,或者我只想让它永远运行。我不能只通过 SSH 连接到我的机器,因为当我断开连接时它会停止运行。
有没有办法运行不依赖于启动它的 shell 的脚本?
我正在使用 Ubuntu 9.04。
我在 Ubuntu 服务器上运行了多个屏幕,这些屏幕启动为:
screen -dmS screen1 cmd
screen -dmS screen2 cmd
etc...
Run Code Online (Sandbox Code Playgroud)
我需要杀死一个屏幕,但不是全部。用其名称杀死单个特定屏幕的正确命令是什么?我已经阅读了手册页,但似乎找不到我正在寻找的命令。
此外,我想将此命令写入 bash 脚本中,因此我不能像往常一样简单地screen -r screen1按Ctrl+ X。
当我在 GNU 屏幕中打开一个新窗口时,它运行.bashrc但不运行.bash_profile. 在我的设置中,这会导致在该窗口中未正确设置某些环境变量。
如何告诉 GNU screen 始终运行.bash_profile而不是.bashrc打开新窗口?(请不要告诉我只是.bash_profile从我的.bashrc:)
我之前曾使用screen -dr control. 但是,有时此命令不会重新附加到屏幕,而是永远挂起(10 分钟后我中止)。这仅在 SSH 连接意外断开时发生,而不是在屏幕与Ctrl-A d. 其他开关,如screen -x或screen -D -RR也不起作用。
这篇文章建议杀死持有 screen 会话的 PTY,这将导致 screen 完成其断开连接。但是,它只是杀死从中screen -dr control调用的外壳。
例如:
$ ps -ef | grep control | grep -v grep
nomad 7387 7109 0 13:05 pts/50 00:00:00 screen -dr control
nomad 15299 1 0 Nov27 ? 00:13:47 SCREEN -S control
$ ps -ef | grep bash | grep 'pts/50'
nomad 7109 7108 0 12:49 pts/50 00:00:00 -bash
Run Code Online (Sandbox Code Playgroud)
链接的帖子建议杀死 …
我想创建一个 crontab 条目,以便它启动屏幕,启动游戏服务器并分离。这是为了以防服务器重新启动并且我希望它自动为我启动它。
0 0 0 0 0(命令)
应该在启动时运行。
它运行一个位于 ~/cube/server.sh 的 shell 文件
所以我用 256 色编译了屏幕,以 256 色模式在 Konsole 上运行。如果开始屏幕,则 TERM 设置为“屏幕”。如果我手动将 TERM 导出到 screen-256color ,则一切正常。
我有两个问题。第一个是为什么 screen 在支持时将 TERM 设置为“screen”而不是“screen-256color”?第二个是,如果我的 .screenrc 文件中有以下行
term screen-256color
Run Code Online (Sandbox Code Playgroud)
为什么 screen仍然没有设置我的任期?
附加信息:我正在 Kubuntu Jaunty amd64 上运行 Screen version 4.00.03jw4 (FAU) 2-May-06
当我运行 screen 时,它会改变我的提示。我如何防止这种行为?例如:
$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$
Run Code Online (Sandbox Code Playgroud)
有趣的是,它在其他机器上不会这样做。有问题的机器是 Redhat 4 update 4,屏幕版本为 4.00.02 (FAU) 5-Dec-03。
我执行以下操作:
我怎样才能向上滚动阅读?
不,修复程序现在不是解决方案......