我有一个屏幕会议运行,我想:退出,但我不能因为当我试图重新附加,我得到一个错误,说不能打开我的terminal。 我敢肯定,我可以杀死守护进程,但是我需要学习“正确”的方式,以及实际发生的事情。
daniel@DELIRIUM:~/server1/bin/plugins$ screen -list There is a screen on: 1424.pts-0.DELIRIUM (06/23/2011 01:18:14 PM) (Detached) 1 Socket in /var/run/screen/S-daniel. daniel@DELIRIUM:~/server1/bin/plugins$ screen -r 1424 Cannot open your terminal '/dev/pts/0' - please check.
另外,什么是套接字? 你越能把它变得越好。
由于某种原因你不拥有你的TTY。 您是否使用su从其他用户更改为该用户? 通常,TTY由最初login到该terminal的人拥有。
有一个巧妙的技巧来解决这个问题(除了最初login的用户改变/ dev / pts / 0文件的权限之外), bsdutils软件包有一个名为script的程序,运行时,它的作用类似于键盘logging程序,保存你input的内容和打印的程序。 它启动另一个shell并为该shell分配另一个伪指令来logging所有这些,所以如果你运行script /dev/null ,它将创build一个具有适当权限的新的伪指令,并开始在它上面logging/ dev / null。 然后,您将能够使用屏幕重新连接您的会话。
对于“套接字”,这是屏幕的命名pipe道文件(也称为FIFO)在/var/run/screen/S-username的术语,例如
prw------- 1 derf derf 0 Jun 23 22:42 30029.pts-0.server
当您第一次启动屏幕时,将创build此pipe道文件,以便连接您正在使用的screen过程,以便用程序实际运行的背景screen过程(通常更名为SCREEN )来查看显示screen 。当您运行screen -r ,你正在运行的屏幕进程打开这个pipe道,与背景屏幕进程交谈。
一些奇怪的事情在这里发生。 你可以请粘贴的输出:
ls -l /dev/pts/0 id
在这种情况下,套接字是进程间通信的一种forms,它是文件系统上的一个文件,在进程之间和其他进程之间形成一个通道。 所以你的屏幕“客户端”正在与另一个正在运行的屏幕实例交谈,这就是屏幕魔法的作用。 套接字在Linux中是混淆的概念,因为传统上人们把套接字这个词当作networking套接字。 它是一个很难理解的概念,适用于“UNIX环境下的高级编程”一书中最好解释的一系列其他进程间通信通道。