Нужен скрипт для автоматической перезагрузки Mac, пока согласованная скорость соединения SATA не станет равной SATA II
У меня есть пара Mac в конце 2009 года под управлением Mavericks. Я недавно заменил их жесткие диски на SSD. Кажется, все работает нормально, но я не всегда получаю скорость SATA II. Компьютер часто согласовывает скорость до SATA I. Если я перезагружаю компьютер достаточно много раз, он в конечном итоге регистрируется на скоростях SATA II, и я готов к работе.
Я не думаю, что есть элегантное решение проблемы, но есть ли сценарий, или кто-то может написать, что при запуске проверил бы мою согласованную скорость соединения SATA, и если она меньше 3.0GBPS, он автоматически перезапустится компьютер и цикл, пока он не зачитает соответствующую скорость?
Спасибо! Любая помощь будет оценена
2 ответа
Если бы я оказался в описанной вами ситуации и не смог заменить оборудование, я бы настроил bash
сценарий для проверки скорости SATA Negotiated Link SSD и если она меньше 3
перезагрузите, пока не станет меньше 3
,
Вот пример того, что я бы сделал:
Заметки:
- Это было протестировано в чистой установке macOS Sierra 10.12.6, где по умолчанию
/usr/local/bin
не существует, поэтому целевой каталог должен быть создан в первую очередь. -
bash
сценарий названsnls
, обозначая: S ATA N договорная L чернила S peed - Как закодировано, это предполагает, что у вас есть только один SATA SSD и никакие другие устройства SATA не подключены. Если у вас есть более одного, то
awk
Команда должна быть изменена по мере необходимости. - Единственная разница в коде, представленном здесь, и в том, что было проверено,
-lt 3
был установлен на-lt 7
потому что в моей системе6
нормальное значение вывода команды в левой части-lt
оператор, и, установив его7
он перезагружался до тех пор, пока выражение не было изменено из режима восстановления для включения нормальной загрузки, где я изменил его на-lt 6
так что он будет загружаться нормально. Не имея проблем с моей системой, это был единственный способ проверить это.
В терминале выполните следующие команды для настройки bash
скрипт и запуск демона, который проверит согласованную скорость соединения SATA 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($4)}') -lt 3 ]] && shutdown -r now
Сохраните изменения и выйдите nano
нажав следующие последовательности клавиш:
Control X
Y
Войти
Все еще в Терминале:
Делать snls
исполняемый, только для root
:
sudo chmod 744 /usr/local/bin/snls
Создать Launch Daemon .plist
файл для snls
:
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
нажав следующие последовательности клавиш:
Control X
Y
Войти
Загрузите демон запуска:
sudo launchctl load /Library/LaunchDaemons/com.sata.snls.plist
С этим набором, каждый раз, когда вы загружаетесь, и SATA Negotiated Link Speed SSD меньше, чем 3
перезагрузится, пока не 3
Однако много раз это занимает.
ПРЕДУПРЕЖДЕНИЕ. Не выполняйте этот процесс, если вы не знаете, как загрузить режим восстановления и этот режим восстановления работает в вашей системе, или у вас есть альтернативный метод для доступа и изменения файловой системы на SSD. Кроме того, вам удобно в терминале режима восстановления перейти к любому созданному целевому файлу и удалить его, чтобы вы могли нормально перезагрузиться, если что-то не работает, например, застряло в бесконечном цикле перезагрузки, с помощью этого метода в вашей системе.
Посмотрите: О MacOS Recovery
Обратите внимание, что при загрузке в MacOS Recovery и запуске Терминала это не так, как при открытии Терминала при обычной загрузке. Вы находитесь не по умолчанию в вашем обычном домашнем каталоге, а набираете cd /
не сводит вас к корню, например, Macintosh HD
вы бы в корне OS X Base System
, Также, nano
не в PATH
используется Терминалом в macOS Recovery, хотя он доступен, если вы введете правильный путь к файлу.
Когда вы открываете терминал в MacOS Recovery, PWD
является /private/var/root
так, например, чтобы добраться до Macintosh HD
, вы вводите: cd /Volumes/Macintosh\ HD
Опять же, если у вас есть проблема с этим методом, удаление либо snsl
или же com.sata.snls.plist
Восстановление из MacOS позволит системе загружаться нормально, как обычно.
Это невозможно только с AppleScript, так как требует выполнения кода терминала. Поэтому лучше всего создать скрипт, который использует терминал. Неважно, идет ли речь об AppleScript или скрипте bash, хотя самым быстрым способом будет скрипт bash.
Пример команды можно найти здесь.