需要脚本自动重启 Mac 直到协商 SATA Link 速度为 SATA II

Need Script To Automatically Restart Mac Until Negotiated SATA Link Speed is SATA II

我有几辆 2009 年末的 Mac Minis 运行 Mavericks。我最近用 SSD 更换了他们的硬盘。一切似乎都很好,但是,我并不总是能获得 SATA II 速度。计算机通常会降低到 SATA I 速度。如果我重新启动计算机足够多次,它最终会以 SATA II 速度注册,我可以继续了。

我认为这个问题没有完美的解决方案,但是是否有可用的脚本,或者有人可以编写脚本,在启动时检查我协商的 SATA link 速度,如果小于3.0GBPS会自动重启电脑并循环直到读出合适的速度?

谢谢!任何帮助将不胜感激

仅使用 AppleScript 是不可能的,因为它需要执行一些终端代码。因此最好创建一个使用终端的脚本。无论是来自 AppleScript 还是来自 bash 脚本都没有关系,尽管最快的方法是 bash 脚本。

可以找到示例命令 here

如果我发现自己处于您所描述的情况,并且无法更换硬件,我会设置 bash 脚本 来检查 SATA 协商 Link SSD 的速度,如果它小于 3,请重新启动,直到它不小于 [=17] =].

这是我会做的示例

备注:

  • 这是在 macOS Sierra 10.12.6 的全新安装下测试的,默认情况下 /usr/local/bin 不存在,因此目标目录需要首先创建。
  • bash脚本命名为snls,代表:SATA N协商 Link Speed
  • 如编码所示,这假设您只有一个 SATA SSD 而没有其他 SATA 设备 连接的。如果你有多个,awk 命令将需要根据需要进行修改。
  • 此处显示的 代码 与测试的唯一区别是 -lt 3 设置为 -lt 7,因为在我的系统上 6 输出到 -lt operator[=] 左侧的 command 的正常 value 156=],并通过将其设置为 7 它重新启动,直到表达式从 恢复模式 修改为启用正常启动,我将其更改为 -lt 6所以它会正常启动。我的系统没有问题,这是测试它的唯一方法。

终端中,执行以下命令来设置bash 脚本Launch Daemon 将检查 SATA Negotiated Link Speed SSD

sudo mkdir -p /usr/local/bin
sudo touch /usr/local/bin/snls
sudo nano /usr/local/bin/snls

nano 中,键入或复制并粘贴以下内容:

#!/bin/bash

[[ $(system_profiler SPSerialATADataType | awk '/Negotiated Link Speed:/{print int()}') -lt 3 ]] && shutdown -r now

保存更改并按以下键序列退出 nano
ControlX
Y
输入

还在终端:

使 snls 可执行,仅对 root:

sudo chmod 744  /usr/local/bin/snls

snls 创建 启动守护进程 .plist 文件:

sudo touch /Library/LaunchDaemons/com.sata.snls.plist
sudo nano /Library/LaunchDaemons/com.sata.snls.plist

将以下内容复制并粘贴到 nano:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.sata.nls.com</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/snls</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

保存更改并按以下键序列退出 nano
ControlX
Y
输入

加载启动守护进程

sudo launchctl load /Library/LaunchDaemons/com.sata.snls.plist

使用此设置,每次启动时 SATA Negotiated Link Speed SSD 小于 3,它将重新启动,直到 3,无论需要多少次。


警告:除非您知道如何启动到恢复模式并且恢复模式正在您的系统上运行,或者有其他方法来访问和修改 SSD 上的文件系统,否则不要执行此过程.此外,您可以在 Recovery Mode Terminal 中轻松导航到创建的目标文件并删除它们,这样您就可以在出现问题时正常重启,例如在您的系统上使用此方法陷入无休止的重启循环。

看看:About macOS Recovery

请注意,当启动至 macOS Recovery 并启动 Terminal 时,这与打开 Terminal[ 时不同=157=] 正常启动。默认情况下,您不在正常的 Home 目录中,并且键入 cd / 不会将您带到 rootroot Macintosh HD,您将位于 OS X Base Systemroot 中。此外,nano 不在 TerminalmacOS Recovery 中使用的 PATH 中,尽管如果您键入正确的 path 文件名.

当您在 macOS Recovery 下打开 Terminal 时,PWD/private/var/root,例如Macintosh HD,您键入:cd /Volumes/Macintosh\ HD

同样,如果您对这种方法有疑问,从 macOS Recovery 中删除 snslcom.sata.snls.plist 将允许系统正常启动,通常适合你的任何东西。