升级到macOS Sierra后,我收到以下通知:“您的磁盘几乎已满。通过优化存储来节省空间。”:
这些选项似乎是将我的文件存储在iCloud中,自动删除文件或手动删除文件:
我的问题/困扰是我的440GB容量中有80GB可用空间。
问题:是否有办法以(半)永久性方式使此通知静音,或更改其用于通知的阈值?
升级到macOS Sierra后,我收到以下通知:“您的磁盘几乎已满。通过优化存储来节省空间。”:
这些选项似乎是将我的文件存储在iCloud中,自动删除文件或手动删除文件:
我的问题/困扰是我的440GB容量中有80GB可用空间。
问题:是否有办法以(半)永久性方式使此通知静音,或更改其用于通知的阈值?
Answers:
禁用“几乎已满”和“已满”通知的解决方案是禁用负责它的守护程序:
launchctl unload -w /System/Library/LaunchAgents/com.apple.diskspaced.plist
要么
launchctl stop com.apple.diskspaced
另外,如果您只想防止“几乎已满”出现如此频繁,则可以通过以下方法降低GB阈值:
minFreeSpace (int) - minimal free size in GB. Default: 20
对于小型SSD而言,默认的20GB太高了,可能的错误会导致警报每天显示而不是一次显示,因此,作为解决方法,您可以在警报出现之前将可用空间降低,例如降至10GB:
defaults write com.apple.diskspaced minFreeSpace 10
守护程序仅在启动时读取其首选项,因此如果您关闭了系统完整性,则需要重新启动它:
launchctl unload -w /System/Library/LaunchAgents/com.apple.diskspaced.plist
launchctl load -w /System/Library/LaunchAgents/com.apple.diskspaced.plist
否则杀死它:
killall diskspaced
如果您对这些磁盘警报的其他首选项感兴趣,可以使用帮助参数查看其中的一些:
/System/Library/PrivateFrameworks/StorageManagement.framework/Versions/A/Resources/diskspaced help
---
Domain: com.apple.diskspaced
Supported keys:
debugLog (BOOL) - log additional debug information. Default: NO
checkAllVolumes (BOOL) - check all volumes. Default: NO
minDiskSize (int) - minimal disk size in GB. Default: 128
minFreeSpace (int) - minimal free size in GB. Default: 20
minPurgeableSpace (int) - minimal purgeabe space size in GB. Default: 20
---
Commands: removeAllNotifications - Removes all scheduled and delivered user notificiations.
以下是一些隐藏的内容:
warningInterval (integer default 0)
lastWarningDate (string e.g. 2017-05-05 16:48:29 +0000)
我没有仔细查看,但是有可能将上一个警告日期设置为将来的日期,这也会阻止警报显示。
default
for最小空间设置为较低的值。有没有办法查看您手动更改的默认值,还是我自己应该跟踪类似的信息?
在Sierra上,此命令对我不起作用:
launchctl unload -w /System/Library/LaunchAgents/com.apple.diskspaced.plist
由于启用了系统完整性保护,因此要停止diskspaced
服务,请运行:
launchctl stop com.apple.diskspaced
注意:用于start
重新开始或list
查看详细信息(例如PID
)。
如果服务在一段时间后重新启动,请尝试使用以下命令将其停止:
killall -STOP diskspaced
要更改用户的默认设置,以下是一些示例命令:
defaults write com.apple.diskspaced freeSpaceWarningLevel 1
defaults write com.apple.diskspaced warningInterval 3600
defaults write com.apple.diskspaced debugLog 1
defaults write com.apple.diskspaced checkAllVolumes 0
然后重新启动服务:
launchctl stop com.apple.diskspaced && launchctl start com.apple.diskspaced
要查看已加载的设置,请运行diskspaced
,例如:
$(find /System/Library/PrivateFrameworks -name diskspaced -print -quit)
2017-08-04 18:32:27.943 diskspaced[92401:12312556] FreeSpaceWarningLevel: 1
2017-08-04 18:32:27.943 diskspaced[92401:12312556] WarningInterval: 3600
2017-08-04 18:32:27.943 diskspaced[92401:12312556] Check All Volumes: NO
我相信@malhal提到的参数不再存在。这是测试此命令的简单命令:
$ grep -A6 debugLog <(strings $(find /System/Library/PrivateFrameworks -name diskspaced -print -quit))
debugLog
freeSpaceWarningLevel
FreeSpaceWarningLevel: %ld
warningInterval
WarningInterval: %ld
checkAllVolumes
Check All Volumes: %@
通过此命令检查日志中是否有任何警告:
grep com.apple.diskspaced /var/log/system.log
我认为此通知是一个错误。
我的硬盘(1TB硬盘)上有760GB的可用空间,但自升级到Sierra以来,每天早晨仍会收到此通知。
我启用了“优化存储”(但未在iCloud中存储)。
deleted
清除高速缓存的系统进程,无论何时执行,它都会CACHE_DELETE_PURGEABLE_UPDATED
向所有应用程序发送分布式通知。每当发送该通知时,都会显示“您的磁盘快满了”通知,因此,我认为这是某些正在监听该分布式通知的应用程序中的错误。