Shell中的运行屏幕无法找到会话,但是在ssh登录期间可以运行屏幕

亚历克斯·Q

SSH进入主机时,我正在使用RemoteLoginAutoScreen脚本启动屏幕会话。

链接脚本的区别:我使用的是zsh,RemoteLoginAutoScreen使用的是bash

我遇到的问题是我的ssh连接已断开连接(这经常发生,因此会进行自动屏幕配置),并且在重新连接到现有的屏幕会话时遇到问题。

在主机上,我可以看到我的屏幕进程仍在运行,并且屏幕套接字仍然存在:

$ ps auxww | grep -i screen | grep alexq
alexq     1818  0.0  0.0 103452   868 pts/19   S+   18:08   0:00 grep --color=auto -i screen
alexq    20270  0.0  0.0 120040  2004 ?        Ss   Jul21   0:19 SCREEN -R

$ ls -al /var/run/screen/S-alexq
total 6
drwx------ 2 alexq    alexq  4096 Jul 29 17:26 .
drwxrwxr-x 5 root     screen 4096 Jul 21 21:33 ..
prwx------ 1 alexq    alexq     0 Jul 29 17:46 20270.pts-14.myhost

但是,当我登录(没有在屏幕会话中)登录时,屏幕找不到我现有的会话:

$ screen -ls
No Sockets found in /tmp/uscreens/S-alexq.

基于这个问题,我尝试将SCREENDIR环境变量设置为/ var / run / screen / S-alexq,但是当我这样做时,该屏幕仍然找不到会话:

$ export SCREENDIR=/var/run/screen/S-alexq
$ screen -ls
No Sockets found in /var/run/screen/S-alexq.

$ export SCREENDIR=/var/run/screen
$ screen -ls
You are not the owner of /var/run/screen.

我真正感到困惑的是,当我在〜/ .zshrc文件中用“ screen -ls”替换启动屏幕时,将以下内容打印到控制台:

There are screens on:
    20270.pts-14.myhost   (Attached)
1 Sockets in /var/run/screen/S-alexq.

因此由于某种原因,在我的ssh登录期间,屏幕可以找到现有的会话,但是当我在控制台屏幕上时,找不到该会话。

谁能帮我弄清楚为什么屏幕只能在ssh登录期间看到会话,而在之后却看不到?

塞拉达

您有的两个副本screen其中一个将其会话存储在中/tmp/uscreens,另一个将其会话存储在中/var/run/screen,因此他们看不到彼此的会话。

即使您可以强迫他们查看彼此的会话,也有可能它们的副本screen是不同的版本,并且如果彼此交谈会发生不好的事情。但是,无论如何,您已经观察到它不允许您强制它使用来使用其他会话目录$SCREENDIR,这是一种安全措施(因为screen特权,可能是setuid或setgid,取决于确切的操作系统和配置)。

发生此问题的原因$PATH是您登录的方式有所不同,这取决于您的登录方式。

解决方案是使用与启动屏幕相同的屏幕副本来恢复会话。或者,您可以禁用或卸载的副本之一,screen以消除将来造成混淆的可能性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ssh键可用于shell登录,拒绝运行屏幕

在Xcode中存档时找不到模块,但是在“运行”期间找到了模块

登录后,fish shell 登录命令继续在屏幕或 tmux 会话上运行

无法在屏幕会话内运行`startx`

无法从GNU屏幕会话运行startx

Shell脚本在后台使用ssh远程运行命令whit nohup,但是无法关闭此ssh进程。但是我用的屏幕都非常完美

Power Shell脚本在Windows Power Shell ISE中可以正常运行,但是在Power Shell版本5中却无法正常工作

(Ubuntu)Python3脚本可以正常运行,但是在Apache / wsgi下无法找到Selenium模块

mysql 8.0可以运行此sql脚本,但是在mariaDB 5.5中无法运行,并且错误:1064(42000)

Shell脚本:运行屏幕,打开多个屏幕,然后在每个屏幕中运行一个命令

为什么我的Javascript无法在WordPress上运行,但是在本地HTML上可以正常运行?

JDBC无法登录到LocalDB实例,但是在SSMS中,我可以登录

Excel VBA-我的代码本身运行良好,但是在较大的代码中却无法运行

无法在登录屏幕上启动会话

是否可以在正在运行的容器中启动Shell会话(没有ssh)

无法在屏幕上运行代码

屏幕会话被终止,但进程仍在运行

如何列出正在运行的屏幕会话?

Lubuntu和Xubuntu中的屏幕崩溃都可以,但是在Windows Xp上可以正常工作

Cron作业无法运行,但是在shell上手动运行时命令正常

Selenium-无法找到/与登录屏幕交互

在 Jenkinsfile 中的 ssh 会话中运行 shell 脚本

Go App可以运行但是在Docker中-JSON输入意外结束

代码可以在R中正常运行,但是在R-Fiddle中失败,为什么?

PHP + SQL Server,SQL可以运行,但是在服务器响应中设置了RESET标志

通过SSH启动会话时,GNU屏幕冻结,在本地运行。怎么了?

您可以在应用屏幕启动期间运行任何东西吗?

无法使用Mysql根帐户登录,但是在ubuntu 16.04中使用sudo命令时可以登录

MySQL查询可以在命令行中正常运行,但是在php中运行时却报错