0

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

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

$ 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 等)。

我很好奇这是否会影响其他人,或者是否有人知道如何解决它。

4

1 回答 1

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:为什么将“脚本”重定向到 /dev/null/ 允许“屏幕”在作为另一个用户被起诉时工作?

于 2011-05-29T09:57:54.303 回答