标签: gnu-screen

GNU 屏幕标题或硬状态行中的右对齐文本

我的 .screenrc 中有这个

caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%=| %l | ${FULLHOST}"
Run Code Online (Sandbox Code Playgroud)

它通常显示如下内容:

[01:06] 0$ vim  1$ top  2-$ tail  [3$* ~]          | 0.26 0.54 0.36 | machine.domain.com
Run Code Online (Sandbox Code Playgroud)

但是,当我打开很多窗口时,右侧的数据会被推离边缘并被截断:

[01:07] 0$ vim  1$ top  2$ tail  3$ ~  4$ ~  5$ ~  6-$ ~  [7$* ~] | 0.21 0.46 0.34 | mac
Run Code Online (Sandbox Code Playgroud)

如何更改标题命令,以便在必要时截断窗口列表,而不是将正确的信息从边缘推送出去?如果活动窗口也总是显示,则奖励积分。

linux unix gnu-screen

6
推荐指数
1
解决办法
2347
查看次数

如何知道谁连接到我的屏幕以及他在屏幕上的哪个位置?

我使用屏幕,有时我不得不分享它。如何管理与屏幕的活动连接?

我想监控连接和连接的用户,他们在哪里以及他们做什么。我也希望能够把他们踢出去。

这可能吗?

谢谢。

linux gnu-screen

6
推荐指数
1
解决办法
1436
查看次数

我可以在脚本中创建和操作 Unix“屏幕”吗?

我的 Ubuntu 笔记本电脑上有一个工作环境,我想在其中使用三个不同的屏幕。

例如。在终端,我通常写

screen -S mywork
run_server_1
Run Code Online (Sandbox Code Playgroud)

然后,ctrl-a c 创建第二个屏幕

run_server_2
Run Code Online (Sandbox Code Playgroud)

等等。

我想编写一个脚本来自动设置此环境,但是如何从一个脚本控制多个屏幕?

更新:我真的希望能够从 shell 脚本而不是屏幕配置中做到这一点。文件。有没有办法做到这一点?

scripting linux unix gnu-screen

6
推荐指数
1
解决办法
2514
查看次数

使用 su 在另一个用户中使用屏幕

所以,如果我这样做:

su -c 'screen -dmS screenname script to run' - user to run as
Run Code Online (Sandbox Code Playgroud)

它不会工作。如果从 root 执行 screen 命令正在工作,所以那里没有问题。

如果我做:

su - user
screen
Run Code Online (Sandbox Code Playgroud)

我得到:

Cannot open your terminal '/dev/pts/0' - please check.
Run Code Online (Sandbox Code Playgroud)

怎么了?

编辑:我一直在四处寻找,似乎找不到解决这个问题的任何好办法。

我会做下一个最好的事情:以 root 身份运行屏幕。

su users gnu-screen

6
推荐指数
2
解决办法
5982
查看次数

nohup vs 屏幕 vs ? 用于手动启动守护进程

当我需要在低重要性服务器上启动后台进程时,我倾向于使用 nohup:

nohup ./server.sh &
Run Code Online (Sandbox Code Playgroud)

大多数同事似乎更喜欢屏幕:

screen -D -R mydaemon
./mydaemon.sh
^A ^D
Run Code Online (Sandbox Code Playgroud)

这两种方法的效果有什么主要区别吗?以一种方式或另一种方式有什么好处?

daemon nohup background-process gnu-screen

6
推荐指数
1
解决办法
3498
查看次数

Linux:连接到另一个终端会话

我可以使用 screen 或 tmux 连接到其他终端会话,或共享它们。但是只有当我们第一次知道我们会使用它们时,这项工作才有效。
由于 root 可以访问所有内容,有没有办法在不运行 screen 的情况下做同样的事情?一些管道通过三通左右。

例如,远程接管某人打开的控制台或 ssh 会话。允许看到正在发生的事情并正确关闭事物。

linux ssh console gnu-screen tmux

6
推荐指数
1
解决办法
3万
查看次数

Cygwin Screen 和 SSH:未找到 Utmp 插槽 -> 未删除

当我screen在我的电脑上使用并分离时,我被带回命令提示符,一切都很好。但是,如果我通过 SSH 远程连接到我的计算机并使用屏幕,当我尝试分离时,我会收到错误Utmp slot not found -> not removed.

然后它挂起,我什至不能ctrl-cctrl-d不得不关闭 Cygwin 窗口。为什么会发生这种情况,我该如何解决?

请注意通过 SSH 退出您的计算机然后返回来重新创建错误:

$ screen
(C-a d)
$ ssh -R12345:localhost:22 username@someServer
$ ssh -p12345 username@127.0.0.1
$ screen -r
(C-a d)
Run Code Online (Sandbox Code Playgroud)

ssh cygwin gnu-screen

6
推荐指数
1
解决办法
2233
查看次数

screen 导致“tail -F | grep”回显不匹配的行

这是 Ubuntu (3.13.0-29-generic #53),尝试做一个简单的 bash 脚本来监控匹配行的日志文件。

如果我执行以下操作,则 bash shell 中除了匹配项之外没有任何输出,这是预期的:

tail -F server.log | grep --line-buffered "word" | tee -a wordwatch.log

但是如果我尝试在屏幕上做同样的事情,会话就会收到来自监视日志文件的不匹配数据的垃圾邮件。显然,它显示了监视日志文件中的所有内容。此垃圾邮件不会出现在输出日志文件中。

screen -S "wordwatch" tail -F server.log | grep --line-buffered "word" | tee -a wordwatch.log

我做错了什么,如何阻止监视的日志向屏幕会话发送垃圾邮件?

grep tail gnu-screen tee

6
推荐指数
1
解决办法
751
查看次数

从屏幕会话中获取硬拷贝

我在屏幕会话中启动了一项作业,预计将运行几个小时。有时我会被要求检查工作是否仍在运行并猜测工作的百分比。

猜测它是否正常工作就像执行 aps -fu $LOGNAME来检查进程是否还活着一样简单,但是为了猜测 % 我需要检查程序的输出(它输出一些可以用于grep -n查看的信息)它当前正在处理的文件行)。

我可以附加会话 ( screen -R jobLoadItems) 并查看它,但我想在不再次附加到会话的情况下执行此操作。我已经检查过在屏幕会话中执行Ctrla-H激活屏幕日志,但它是如此冗长,它将占用所有可用磁盘空间。

那么有没有办法只打印屏幕会话的最后几行而不附加到它?(类似的东西screen -S jobLoadItem -Q display last 50 lines

gnu-screen

6
推荐指数
1
解决办法
1154
查看次数

运行分离的屏幕会话但没有在同一个 bash 中终止

这里已经有很多这样的问题,但每个人都推荐(一种变体)以下解决方案:

screen -dmS somename bash -c "/path/to/script; bash -l"
Run Code Online (Sandbox Code Playgroud)

例如,当script结束时,运行一个新的bash.

不幸的是,这对我不起作用,因为

  • script$BASHPID 变量用于某事
  • script运行始终运行,如需要使用CTRL-C终止它
  • 终止后,我必须具有运行相同的外壳script(相同$BASHPID

所以,问题是:

  • 如何screen在分离模式下启动(例如在启动时) - 通常这是由-dm
  • 它必须启动shell
    • 最好的,如果它可以启动它的“登陆”的外壳,如什么读我的.profile,但这是可以与克服source ~/.profilescript自身
    • script启动一些其他的(二进制)程序究竟会持续至CTRL-C
  • 并且在终止之后script我必须得到相同的bash(相同的$BASHPID(因为需要运行另一个脚本取决于它)

总之需要模拟如下交互工作:

  • 开始 screen
  • echo $BASHPID
  • 在屏幕内运行一些命令(最后一个运行直到 CTRL-C) - 例如运行 /path/to/script
  • 分离 (ctrl-a d)

经过以上,以后,我可以做

  • 重新连接 ( screen -ARR) …

shell bash gnu-screen

5
推荐指数
1
解决办法
1481
查看次数

标签 统计

gnu-screen ×10

linux ×4

ssh ×2

unix ×2

background-process ×1

bash ×1

console ×1

cygwin ×1

daemon ×1

grep ×1

nohup ×1

scripting ×1

shell ×1

su ×1

tail ×1

tee ×1

tmux ×1

users ×1