"
1. # Создайте директорию если нет
sudo mkdir -p /usr/local/bin
2. # Создайте скрипт
sudo nano /usr/local/bin/imac_fan_daemon.sh
3. Содержание файла:
#!/bin/bash
# Демон управления вентиляторами iMac 2011
# Автоматическая регулировка скорости на основе температуры CPUecho ""=========================================""
echo "" Запуск демона управления вентиляторами""
echo "" iMac 2011 27\""""
echo ""=========================================""
echo """"# Включаем ручной режим для всех вентиляторов
echo ""Включаем ручное управление вентиляторами...""
for i in 1 2 3; do
if [ -f ""/sys/devices/platform/applesmc.768/fan${i}_manual"" ]; then
echo 1 > ""/sys/devices/platform/applesmc.768/fan${i}_manual""
echo "" Fan$i: ручной режим включен""
fi
doneecho """"
echo ""Начальные значения:""
for i in 1 2 3; do
if [ -f ""/sys/devices/platform/applesmc.768/fan${i}_input"" ]; then
current_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan${i}_input"")
label=$(cat ""/sys/devices/platform/applesmc.768/fan${i}_label"" 2>/dev/null || echo ""Unknown"")
min_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan${i}_min"")
max_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan${i}_max"")
echo "" Fan$i ($label): $current_rpm RPM (min: $min_rpm, max: $max_rpm)""
fi
doneecho """"
echo ""Датчики температуры:""
sensors | grep -E ""TC0P|TG0H|Tp2H|TPCD"" | head -5echo """"
echo ""=========================================""
echo ""Начинаем мониторинг температуры...""
echo ""Нажмите Ctrl+C для остановки""
echo ""=========================================""# Основной цикл управления
while true; do
# Получаем температуру CPU из разных источников
TEMP1=$(sensors | grep 'TC0P' | awk '{print $2}' | sed 's/[+°C]//g' | cut -d. -f1)
TEMP2=$(sensors | grep 'Core 0' | awk '{print $3}' | sed 's/[+°C]//g' | cut -d. -f1 2>/dev/null || echo ""0"")
# Используем первый доступный датчик
if [ -n ""$TEMP1"" ] && [ ""$TEMP1"" != """" ]; then
TEMP=$TEMP1
SENSOR=""TC0P""
elif [ -n ""$TEMP2"" ] && [ ""$TEMP2"" != ""0"" ]; then
TEMP=$TEMP2
SENSOR=""Core 0""
else
TEMP=50
SENSOR=""default""
fi
# Определяем RPM на основе температуры
if [ $TEMP -lt 40 ]; then
RPM=1200
LEVEL=""Низкая""
elif [ $TEMP -lt 50 ]; then
RPM=1800
LEVEL=""Средняя""
elif [ $TEMP -lt 60 ]; then
RPM=2500
LEVEL=""Выше среднего""
elif [ $TEMP -lt 70 ]; then
RPM=3500
LEVEL=""Высокая""
elif [ $TEMP -lt 80 ]; then
RPM=4500
LEVEL=""Очень высокая""
else
RPM=5500
LEVEL=""КРИТИЧЕСКАЯ!""
fi
# Устанавливаем RPM для всех вентиляторов
for i in 1 2 3; do
if [ -f ""/sys/devices/platform/applesmc.768/fan${i}_output"" ]; then
# Проверяем границы
min_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan${i}_min"")
max_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan${i}_max"")
if [ $RPM -lt $min_rpm ]; then
actual_rpm=$min_rpm
elif [ $RPM -gt $max_rpm ]; then
actual_rpm=$max_rpm
else
actual_rpm=$RPM
fi
echo $actual_rpm > ""/sys/devices/platform/applesmc.768/fan${i}_output""
fi
done
# Получаем текущие RPM для отображения
fan1_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan1_input"" 2>/dev/null || echo ""N/A"")
fan2_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan2_input"" 2>/dev/null || echo ""N/A"")
fan3_rpm=$(cat ""/sys/devices/platform/applesmc.768/fan3_input"" 2>/dev/null || echo ""N/A"")
# Выводим информацию
echo ""[$(date '+%H:%M:%S')] ${SENSOR}: ${TEMP}°C (${LEVEL}) -> RPM: ${actual_rpm} | Fan1: ${fan1_rpm} Fan2: ${fan2_rpm} Fan3: ${fan3_rpm}""
# Интервал проверки (секунды)
sleep 3
done# При завершении возвращаем автоуправление (если скрипт завершится не по Ctrl+C)
echo """"
echo ""Возвращаем автоуправление вентиляторами...""
for i in 1 2 3; do
if [ -f ""/sys/devices/platform/applesmc.768/fan${i}_manual"" ]; then
echo 0 > ""/sys/devices/platform/applesmc.768/fan${i}_manual""
fi
done
echo ""Демон остановлен.""
4. Сделать скрипт исполняемым:
sudo chmod +x /usr/local/bin/imac_fan_daemon.sh
5. Тестовый запуск
sudo /usr/local/bin/imac_fan_daemon.sh
6. Создать службу для автоматического запуска:
sudo nano /etc/systemd/system/imac-fans.service
7. Содержание файла
[Unit]
Description=iMac Fan Control Service
After=multi-user.target
After=lm_sensors.service[Service]
Type=simple
ExecStart=/usr/local/bin/imac_fan_daemon.sh
Restart=always
RestartSec=5
User=root
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target
8. Обновите systemd
sudo systemctl daemon-reload
9. Включите автозагрузку
sudo systemctl enable imac-fans.service
10. Запустите службу
sudo systemctl start imac-fans.service
11. Проверьте статус
sudo systemctl status imac-fans.service
12. Посмотрите логи
sudo journalctl -u imac-fans.service -f
13. Проверьте текущие RPM
for i in 1 2 3; do
echo ""Fan$i: $(cat /sys/devices/platform/applesmc.768/fan${i}_input) RPM""
done# Проверьте режим управления
for i in 1 2 3; do
echo ""Fan$i manual mode: $(cat /sys/devices/platform/applesmc.768/fan${i}_manual)""
done
14. Если нужно остановить службу: (на всякий случай)
sudo systemctl stop imac-fans.service
15. Скидываемся мне на TpLink
"