Команда Sudo в скрипте bash останавливает скрипт

У меня есть 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."

Проблема находится в «судо су». Он запрашивает пароль, но после ввода пароля ничего не происходит. Он просто останавливается.

этот метод

1
задан 20 January 2015 в 09:15

3 ответа

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

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

$ sudo ./yourscript

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

3
ответ дан 24 May 2018 в 00:01

Вы можете просто вынуть интерактивные материалы и скопировать строки в /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

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

4
ответ дан 24 May 2018 в 00:01

Команда sudo su создает новый сеанс оболочки. Он ждет ввода ваших команд. Он не будет выполнять команды после этой строки.

У вас есть 2 варианта:

1) Извлеките команды после sudo su в отдельном скрипте и запустите это с помощью sudo [ ! d3]

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

0
ответ дан 24 May 2018 в 00:01

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

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