我正在自动化一个维护例程,涉及启动和停止在屏幕会话中运行的脚本。 我的方法是杀死屏幕会话,然后重新启动它,并使用能力在脚本内运行命令,同时创build屏幕和传递命令,而无需附加到屏幕上。 不过,我在这方面遇到困难。 我可以正确地创build屏幕,而无需使用screen -d -m -S screen_name 。 但是,如果我运行的命令基于: screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015'' 与echo -ne'\ 015'包装反引号,而不是单引号。 这是模拟用户按下回车键,因为我使用的命令是移动到一个目录,并执行一个脚本在那里。 这个命令可以工作,但是只有在屏幕创build完成后才能连接。 正如我试图自动创build屏幕和运行其中的命令的过程,我想避免必须附加和分离在一个脚本。 我将尝试创build一个包含我需要在屏幕内执行的命令的shell脚本,并根据我的结果进行编辑。 有没有办法在一个命令中创build一个屏幕并在屏幕上运行一个命令,或者在创build之后但在命令执行之前不必附加到屏幕上? 提前致谢。 **更新 – 尝试build议将我需要执行的命令放在shell脚本中我已经能够成功地创build一个屏幕并从屏幕内执行命令,但是我得到的是当脚本停止运行屏幕也closures。 这不应该是一个问题,因为脚本是一个日志脚本,应该只停留在系统pipe理员的知识或通过我试图发展的脚本停止,但最好有屏幕设置的方式,屏幕如果脚本停止不会消失。 是否有可能实现这种行为? **
刚刚了解了关于linux上的屏幕命令 – 这是天才。 我喜欢它。 但是,屏幕上的实际terminal/提示的外观和行为与标准的bash提示不同。 也就是说,颜色是不一样的,标签完成似乎没有工作,等等。 有没有一种方法,我可以告诉屏幕的行为就像一个正常(至less,我习惯于正常)bash提示? 附加信息 我通过ssh从Mac(terminal)连接到一个无头Linux的盒子(Ubuntu)。 login后,我有TERM=xterm-color ,当我运行屏幕我有TERM=screen 。 我会尝试下面的build议,看看我能否先改变$TERM值。
我search,找不到任何地方的解决scheme。 我使用Windows中的PuTTY连接到运行bash和屏幕的各种服务器。 看来bash可以很好的使用Ctrl-箭头键在命令行上逐字跳转,但在屏幕内却不起作用。 不是在屏幕上,按住左键发送“^ [OC和CTRL右键是'^ [OD]。在屏幕内我得到”^ [[C“和”^ [[D“,这似乎是代码只是左/右箭头键有没有什么办法让屏幕识别CTRL-箭头键时使用PuTTY?(FYI,我不记得有这个问题,当在Linux中使用gnuterminal而不是腻子)。 更新:它显示腻子是问题,因为它不是发送这个工作所必需的转义码。 我现在放弃使用Cygwin + mintty。
我被su'ed到一个用户运行一个特定的长时间运行的脚本。 我想使用屏幕,但我得到错误信息“无法打开您的terminal/ dev / pts / 4”,请检查。 所以我search了一下,遇到了一个论坛post,指示运行$ script '/dev/null/' 。 我这样做,然后我可以屏幕。 为什么这个工作? 什么是做屏幕不能像su'ed用户运行? 为什么redirect“脚本”到/ dev / null做这个被阻止呢? 是使用脚本来写一个日志作为原来的用户到某个地方?
由于我整天使用* nix命令screen ,并且我找不到任何人开始这个问题,我认为它应该开始。 你知道演习:社区wiki,每个function一个答案,所以我们都可以投票。
所以我使用GNU Screen来pipe理多个运行脚本/程序。 复用和分离是相当有用的。 我从磁盘中删除了脚本,现在我在查找备份时遇到了一些麻烦。 但是,其中一个terminal会话在文件被删除之前正在执行脚本,并继续正常工作。 有没有办法劫持正在运行脚本的terminal会话来恢复这个文件的内容?
当我在putty会话中使用屏幕时,似乎无法使用putty的回滚缓冲区来查看只是滚动屏幕的内容。 相反,我只是在运行屏幕之前看到腻子会话中发生了什么。 我在这里错过了什么? 我喜欢能够回滚,而且我不想使用屏幕function来查看过去的缓冲区; 我的鼠标上的滚轮没有钩入屏幕,我不指望它会。 谢谢!
是否有可能检查我现在是否在屏幕上? 我需要它来确定是否按Ctrl + D将断开我从服务器或只是closures当前屏幕。 谢谢。
我在Linux服务器上的屏幕会话中有一个长期运行的服务器进程。 这有点不稳定(可悲的是不是我的软件,所以我不能解决这个问题!),所以我想脚本夜间重新启动的过程,以帮助稳定。 使其正常关机的唯一方法是进入屏幕进程,切换到正在运行的窗口,并在其控制台上inputstring“stop”。 是否有任何智能redirect扭曲,我可以做一个cronjob每天在固定的时间发送停止命令?
我希望能够通过桌面上的单个ssh命令在远程服务器上启动屏幕会话。 但是,屏幕似乎需要一个terminal,这通过ssh运行命令时不可用。 所以很明显 ssh [email protected] screen "tail -f /var/log/messages" (作为例子)不起作用,并给予 Must be connected to a terminal. 我希望ssh在屏幕下启动命令,以便稍后login并按照我将手动启动的屏幕会话进行连接。