2010-07-20 26 views
0

我在Mac OS X 10.5.8上。我不确定这是什么时候开始发生的,但我发现当我重新连接到从ssh会话开始的屏幕会话时,任何依赖dscl(目录服务)或底层getent的东西都会失败。dscl无法从重新连接的屏幕内工作

如果我在上启动会话那台机器在终端上,一切正常。重新连接时,只有远程启动的屏幕会话有问题。

$ dscl . -list /Users 
>> works 

$ screen 
$ dscl . -list /Users 
>> works 

[detached] 

$ dscl . -list /Users 
>> works 

$ screen -x 
$ dscl . -list /Users 
Operation failed with error: eServerNotRunning 

也是失败的:

$ whoami 
504 

我已经重新启动,调试,并没有运气一派约6小时了。

这真的很痛苦,因为它会影响很多应用程序(ssh,git,rake等)。

我很好奇这是否影响到其他人,或者如果有人有任何想法如何解决它。

+0

我跑进DSCL不工作的同样的问题,用了同样的错误,而不是重新连接从屏幕使它DSCL工作一次。谢谢! – momeara 2010-08-05 15:01:44

+0

我已经调查了这一点。 看来,如果我从远程登录(即SSH)开始屏幕然后屏幕设置完全不同。 只是共享一个数据点。 如果屏幕从终端启动,则表现要好得多。 – apinstein 2010-11-13 16:21:00

回答

2

下面是同一台计算机上两个帐户(OS 10.5.8)中的示例。无法在ssh上测试它,对不起。试想一下:

1st account = one 
2nd account = two 

假设被记录到 “一”:

one$ screen 
one$ dscl . -list /Users >> works 

现在同时记录到 “二”:

two$ su - one 
Password: 

one$ script /dev/null 

启动脚本,输出文件是/ dev/null的

bash-3.2$ screen -x 
bash-3.2$ dscl . -list /Users >> works 

就是这样;)

如果好奇:Stackoverflow: Why does redirecting 'script' to /dev/null/ allow 'screen' to work while su'ed as another user?

+0

你的测试并不真正相关;我在我的问题中规定,它适用于你刚才测试的情况。 – apinstein 2011-06-04 16:30:44