Articles of 屏幕

为分离的屏幕会话创build一个附加日志

我使用分离的屏幕会话来启动一个进程,我喜欢它,因为我可以重新连接会话并检查它是如何进行的。 该过程显示会话输出,使用screen -r或screen -x进行检查,我也想创build一个日志,对于屏幕会话和日志文件这两个信息。 通常我使用这个屏幕命令: screen -A -m -d -S prog01 binarie_program 我试过这个: screen -A -m -d -S prog01 binario > server.log 没有成功,实际上它创build了一个名为server.log的文件,但是没有行。 有什么build议么? 提前致谢

用-X杀死命名的运行屏幕只有在重新连接后才能工作

我正在使用Ubuntu 8.04.4,并希望像这样启动守护进程: screen -dmS SESSIONNAME script.sh 然后我想像这样用-X杀死这些屏幕 screen -S SESSIONAME -X kill 但是,这是行不通的。 只有当我附加和分离该会话,它会被上面的命令kill'ed。 我究竟做错了什么? 我想不必附加/ deattach会话杀死它,因为我想使用结构脚本远程启动/停止守护进程。 – 谢谢

我如何强制gnu屏幕刷新其日志文件?

我正在使用这样的屏幕: screen -L -dm -S session1 -c "./game_server -options" 环绕游戏服务器。 我将他们的输出logging到一个文件,并可以发送他们的input: screen -r session1 -p0 -X "stuff \"this into input^M\"" 日志文件刷新之间的超时可以在configuration文件中指定(我的情况是10秒)。 我遇到的问题是我无法强制屏幕刷新输出到日志文件。 例如,在向游戏服务器发送“状态”命令后,游戏服务器会打印一些信息,但至less需要10秒才能将其添加到日志文件中。 我曾尝试发送: screen -r session1 -p0 -X "logfile flush 1" 但是它并没有对此作出反应。 我也试过冲洗0没有运气。 我不想总是以1秒的超时时间logging,只有在收到命令后才真正需要。 请注意,我对这里的performance偏执,因为会话毕竟是在运行游戏服务器。 我如何强制屏幕刷新输出到日志文件? 有没有办法做我所需要的(日志输出到文件和发送命令input)除了屏幕,也许用一个前锋?

使用屏幕监视非交互式脚本(或其他解决scheme)

我有一些自主脚本,通过ssh在远程机器上运行命令。 这些脚本依靠获取stdout,stderr和每个命令运行的返回代码。 我希望能够监视每个目标机器上脚本的进度,以便我能够看到是否有东西被挂起,如果有必要可能会进行干预。 我最初的想法是让脚本在屏幕会话中运行命令,以便人员监视可以简单地使用screen -x附加到会话。 但是,由于屏幕是一个交互式程序,所以从脚本中很难做到这一点。 我可以发送一个命令到屏幕会话与screen -S session -X stuff "command^M" ,但是我没有得到输出并返回代码,我需要回来。 我的第二个想法是把script /path/to/log到~/.bash_profile并将整个会话logging到文件中。 然后监控人员可以简单地拖拽日志文件。 但是,这并不能提供我正在寻找的交互性。 任何想法如何解决这个问题?

通过.screenrc禁用屏幕开始清除?

有什么办法可以禁用gnu-screen的行为,在启动时发出明确的行为吗? 我只是使用屏幕作为后盾,所以如果断开连接,会话不会被HUP处理。 而且我的shell(bash)configuration成“exec screen -A”login,这样我就能自动进入屏幕。 然而,屏幕立即发出一个清晰的,然后我必须回滚,以查看可能已经有的任何login消息。 同样,在出口处,我也想跳过清除,所以我可以看到我的.bash_logout的结果。 (如果有任何帮助,我的术语通常是xterm-color(通过Mac OS X的Terminal.app),虽然我有时通过ssh从其他节点进入,而我通常连接到一个Ubuntu盒/实例。

重新连接屏幕并保留分割

是否有可能重新连接到一个断开的屏幕会话,并保持屏幕分割?

FreeBSD别名用户标识和GNU屏幕

情况如下。 我有FreeBSD用户M ,它是root的别名,即它的UID等于0。 我有一个以M开头的守护进程(作为自动login控制台的shell,如果它很重要)。 守护进程应该以非交互方式启动screen 。 它实际上是这样,但这里的怪癖: screen也开始作为M ,因此它的套接字文件被放置到/tmp/screens/M ,而不是/tmp/screens/root我实际上需要它能够作为根连接仍然以单用户模式离开screen )。 我已经尝试了以下没有成功: USER=root /usr/local/bin/screen … 和 sudo /usr/local/bin/screen … 它如何检测实际的用户名? 我怎么能强迫它认为它是真正的root而不是M ?

从别名启动到另一个用户的屏幕不起作用

minecraft@283823:~$ script /dev/null ; screen -t minecraft Script started, file is /dev/null minecraft@283823:~$ exit Script done, file is /dev/null Cannot open your terminal '/dev/pts/0' – please check. 我的解释是,我留在script /dev/null而不是运行,以设置一个新的点,所以我可以作为su'ed用户屏幕… 我testing我的别名做同样的事情 – script /dev/null ; screen script /dev/null ; screen 。 我在前一天在bash脚本中尝试了这个操作,并且清理了相同的错误。

屏幕。 通过screenrc打开logging(如-L)

screenrc中的哪个选项像“screen -L”一样工作? 我想打开全局logging。 尝试select“login”到/ etc / screenrc中,但在屏幕启动时写入“log:window required”。

有没有办法重新安装在/ tmp / uscreens / …中没有命名pipe道的屏幕会话?

我很难重新连接到屏幕会话,所以我试图杀死客户端屏幕会话并重新连接到服务器会话。 这失败了。 然后,我做了一些有点愚蠢的事情。 我做了一个 – 抹。 现在我在/tmp/uscreens/…目录下没有命名的pipe道文件。 屏幕服务器仍在运行,我想知道是否有可能重新创build命名pipe道。 我使用Win7家庭高级版下运行的屏幕版本4.00.03(FAU)23-Oct-06在cygwin下运行。 虽然我可以从杀死屏幕服务器和它的孩子恢复,我宁愿不要。 有任何想法吗? 编辑 :这是从我的FD目录列表: $ ls -l / proc / 8728 / fd / 总计0 lrwxrwxrwx 1 Adrian None 0 5月12日22:32 0 – > / dev / null lrwxrwxrwx 1 Adrian None 0 5月12日22:32 1 – > / dev / null lrwxrwxrwx 1 Adrian None 0 […]