Macos El Capitan的smbd阻塞睡眠

Macos El Capitan的smbd阻塞睡眠,macos,hibernate,osx-elcapitan,sleep-mode,Macos,Hibernate,Osx Elcapitan,Sleep Mode,我最近更新了一台旧的MacBookPro(2007年的3,1)作为音乐播放器。我安装了10.11.6(此型号的最后一个支持的操作系统),一切看起来都很好,直到我发现通过SMB连接到文件共享导致它随后无法进入深度睡眠(休眠)。我将“休眠”定义为硬盘向下旋转,盖扣旁边前面的led开始闪烁的状态。如果通过SMB进行了任何连接,则当要求机器睡眠时,机器会简单地清空屏幕,前面的led亮起但变暗,硬盘仍在旋转,单击轨迹板按钮会使其立即恢复活力 我将问题隔离到smbd。以下是通过SMB共享连接到pmset-g

我最近更新了一台旧的MacBookPro(2007年的3,1)作为音乐播放器。我安装了10.11.6(此型号的最后一个支持的操作系统),一切看起来都很好,直到我发现通过SMB连接到文件共享导致它随后无法进入深度睡眠(休眠)。我将“休眠”定义为硬盘向下旋转,盖扣旁边前面的led开始闪烁的状态。如果通过SMB进行了任何连接,则当要求机器睡眠时,机器会简单地清空屏幕,前面的led亮起但变暗,硬盘仍在旋转,单击轨迹板按钮会使其立即恢复活力

我将问题隔离到smbd。以下是通过SMB共享连接到pmset-g断言时的输出(在这种状态下,它将拒绝休眠):

如果我重新启动并且不连接(系统将正常休眠),则输出如下

唯一的区别是第一组结果中的NetworkClientActive 1

然后,我设置了一个脚本,关闭文件共享和smbd,然后再打开,在此过程中抛出所有连接:

#!/bin/sh
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist

pmset sleepnow
运行此脚本始终会导致机器进入休眠状态,从而确认smbd是问题的根源

现在,我已经将此设置为一种解决方法,将脚本的名称插入sudoers并设置一个调用,以便通过单击dock上的图标重置smbd并使机器休眠。但我真的宁愿解决问题的根源

有没有办法阻止smbd阻止休眠?我希望能够通过电源按钮或apple菜单命令可靠地休眠机器,而不必使用自定义脚本

“Wake for ethernet access”在节能方面是关闭的,所以不是这样

我应该注意,这只适用于从外部机器启动的SMB连接。MBP在登录时打开到我的NAS的SMB连接,但这不会干扰睡眠。当我从Windows机箱打开与笔记本电脑的SMB连接时,就会出现问题,即使我在尝试睡眠MBP之前通过将Windows机箱发送到睡眠状态来断开连接。我怀疑这意味着,如果机器有效地充当外部客户端的服务器,那么它将设置NetworkClientActive标志并阻止睡眠

2020-08-27 11:18:44 +0100 
Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   0
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     0
   NetworkClientActive            0
Kernel Assertions: 0x4=USB
   id=500  level=255 0x4=USB mod=01/01/1970, 01:00 description=com.apple.usb.externaldevice.fd100000 owner=SONATA Audio
Idle sleep preventers: IODisplayWrangler
#!/bin/sh
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.AppleFileServer.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist

pmset sleepnow