У меня есть iMac в начале 2009 года с проблемой датчика. Вентиляторы ODD и CPU работают на полной скорости. Чтобы получить их до минимальной скорости в Ubuntu, мне нужно установить скорости в терминале, используя этот метод. Вместо этого, после каждой загрузки, я сделал скрипт bash для этого, но он не работает.
Это мой скрипт:
#!/bin/bash
echo "Beginning script..."
echo "Logging in as root..."
sudo su
cd /sys/devices/platform/applesmc.768/
echo "Enabling manual override for Fan 1 (ODD fan)..."
echo '1' > fan1_manual
echo "Setting speed of Fan 1 (ODD fan) to 1650 RPM..."
echo '1650' > fan1_output
echo "Enabling manual override for Fan 3 (CPU fan)..."
echo '1' > fan3_manual
echo "Setting speed of Fan 3 (CPU fan) to 1200 RPM..."
echo '1200' > fan3_output
echo "Done."
Проблема находится в «судо су». Он запрашивает пароль, но после ввода пароля ничего не происходит. Он просто останавливается.
Ваш скрипт останавливается, потому что sudo su запускает новый процесс оболочки. Ваш исходный процесс оболочки - тот, который запускает ваш скрипт, - ждет завершения суб-оболочки.
Я предлагаю запустить весь скрипт с правами root, вместо того, чтобы просить войти в систему как root из самого скрипта , Удалите часть sudo su из вашего кода и запустите скрипт следующим образом:
$ sudo ./yourscript
Это обычная практика. Обратите внимание, что сценарии системного администрирования, например, например update-grub, не запрашивают пароль root - ожидается, что они будут выполняться как root.
Вы можете просто вынуть интерактивные материалы и скопировать строки в /etc/rc.local между # По умолчанию этот скрипт ничего не делает. и выход 0 строк
sudo nano /etc/rc.local
Вставить отредактированный скрипт ..
cd /sys/devices/platform/applesmc.768/
echo "Enabling manual override for Fan 1 (ODD fan)..."
echo '1' > fan1_manual
echo "Setting speed of Fan 1 (ODD fan) to 1650 RPM..."
echo '1650' > fan1_output
echo "Enabling manual override for Fan 3 (CPU fan)..."
echo '1' > fan3_manual
echo "Setting speed of Fan 3 (CPU fan) to 1200 RPM..."
echo '1200' > fan3_output
Ctl o Enter Будет сохранен файл
Ctl [ ! d5] x Выход из nano
Таким образом, он будет выполняться при загрузке.
Команда sudo su создает новый сеанс оболочки. Он ждет ввода ваших команд. Он не будет выполнять команды после этой строки.
У вас есть 2 варианта:
1) Извлеките команды после sudo su в отдельном скрипте и запустите это с помощью sudo [ ! d3]
2) измените такие строки, как echo '1' > fan1_manual на echo '1' | sudo tee fan1_manual