代码之家  ›  专栏  ›  技术社区  ›  dcmichael

需要脚本自动重启Mac,直到协商的SATA链路速度达到SATA II

  •  -2
  • dcmichael  · 技术社区  · 8 年前

    我有几部2009年末的小牛。我最近用固态硬盘替换了他们的硬盘。一切似乎都很好,然而,我并不总是得到SATA II的速度。计算机通常协商到SATA I速度。如果我重启电脑足够多次,它最终会以SATA II速度注册,我很乐意去做。

    我不认为有一个优雅的解决方案来解决这个问题,但是否有一个脚本可用,或者有人可以编写,在启动时会检查我协商的SATA链路速度,如果低于3.0GBPS,它会自动重启计算机并循环,直到它读出适当的速度?

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

    2 回复  |  直到 8 年前
        1
  •  2
  •   user3439894    8 年前

    如果我发现自己处于您描述的情况,并且无法更换硬件,我会设置一个 bash 检查 SATA协商链路速度 固态硬盘 3 ,重新启动,直到不低于 3.

    这是一个 实例

    笔记:

    • macOS Sierra 10.12.6 ,其中,默认情况下, /usr/local/bin
    • 剧本 已命名 snls S ATA N L S
    • 按照编码,这假设您只有一个 没有别的了 SATA 设备 awk 命令 需要根据需要进行修改。
    • 密码 -lt 3 已设置为 -lt 7 6 正常吗 价值 命令 -lt 操作人员 ,并将其设置为 7 它重新启动,直到表达式从 为了启用正常引导,我将其更改为 -lt 6 这样它就会正常启动。我的系统没有问题,这是唯一的测试方法。

    航空站 ,执行以下操作 命令 要设置 剧本 启动守护进程 :

    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($4)}') -lt 3 ]] && shutdown -r now
    

    保存更改并退出
    控制
    Y

    仍然在 航空站

    制作 可执行,仅限于 root

    sudo chmod 744  /usr/local/bin/snls
    

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

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

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

    <?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>
    

    纳米技术 按以下按键顺序:
    十、
    Y

    加载 启动守护进程

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

    有了这一套,每次启动时 固态硬盘 3. ,它将重新启动,直到 ,不管需要多少次。


    警告:除非您知道如何引导到恢复模式并且恢复模式在您的系统上工作,或者有其他方法访问和修改SSD上的文件系统,否则不要执行此过程。此外,在恢复模式终端中,您可以轻松导航到创建的任何一个目标文件并将其删除,以便在系统上使用此方法时,如果某些东西不起作用,例如陷入无休止的重新启动循环,您可以正常重新启动。

    请看一下: About macOS Recovery

    注意,当引导到 macOS恢复 然后你开始 ,这不像你打开 目录,并键入 cd / 不会带你去 例如。 Macintosh HD ,你会在 属于 OS X Base System . 而且 不在 PATH 使用人 航空站 macOS恢复 路径文件名

    当你打开 在下面 macOS恢复 PWD /private/var/root Macintosh HD cd /Volumes/Macintosh\ HD

    同样,如果您对此方法有问题,请删除 snsl com.sata.snls.plist macOS恢复

        2
  •  -1
  •   stuiterveer    8 年前

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

    here .

    推荐文章