Команда Sudo в сценарии удара останавливает сценарий

У меня есть начало iMac 2009 с проблемой с датчиком. НЕЧЕТНЫЕ и вентиляторы процессора выполняются в полной скорости. Для снижения их к минимальной скорости в Ubuntu, я должен установить скорости в Терминале, с помощью этого метода. Вместо того, чтобы делать это после каждой начальной загрузки, я сделал сценарий удара, чтобы сделать это для меня, но это не работает.

Это - мой сценарий:

#!/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". Это запрашивает пароль, но после ввода пароля, ничего не происходит. Это просто останавливается.

Вот снимок экрана

1
задан 19 January 2015 в 22:15

3 ответа

Ваш скрипт останавливается, потому что sudo su запускает новый процесс оболочки. Ваш оригинальный процесс оболочки - тот, который выполняет ваш сценарий - ожидает окончания работы вспомогательной оболочки.

Я предлагаю запускать весь скрипт с правами root вместо того, чтобы просить войти в систему как root из самого скрипта. Удалите часть sudo su из своего кода и запустите скрипт следующим образом:

$ sudo ./yourscript

Это обычная практика. Обратите внимание, что сценарии системного администрирования, такие как, например, update-grub, не запрашивают пароль root - они просто должны запускаться с правами root.

3
ответ дан 10 November 2019 в 08:08

Команда sudo su создает новую сессию оболочки. Это ожидает Вас для ввода команд. Это НЕ попытка выполнить команды после той строки.

у Вас есть 2 опции:

1) Извлечение команды после sudo su в отдельном сценарии и выполненный, что с sudo

2), изменяют строки как echo '1' > fan1_manual к echo '1' | sudo tee fan1_manual

0
ответ дан 10 November 2019 в 08:08

Вы могли просто вынуть интерактивный материал и скопировать строки в /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 Входят, сохранит файл

Ctl x выйдет из нано

Таким образом, это выполнится, когда Вы загрузитесь.

4
ответ дан 3 December 2019 в 06:26

Другие вопросы по тегам:

Похожие вопросы: