Как обновить сценарий (перевести в спящий режим при заданной температуре процессора) для 16.04 [дубликат]

Этот скрипт работал раньше, затем был обновлен до 14.04.

#!/bin/bash

while true; do
   val=$(sensors | awk '/temp1/ {print $2}')
   max="+75.0"
   if [[ "$val" > "$max" ]]; then
       dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
   fi
   sleep 10
   clear
   sensors
done
exit 0

В 16.04 выдает ошибку:

Ошибка org.freedesktop.DBus.Error.UnknownMethod: Нет такого метода «Suspend»

Можно ли его обновить, чтобы он работал в 16.04?

1
задан 13 April 2017 в 15:23

1 ответ

Я решил голосовать, чтобы закрыть это и радикально обновить другой вопрос, где я ожидаю ответ.


Поскольку ошибка была Error org.freedesktop.DBus.Error.UnknownMethod: No such method 'Suspend', после комментария, сделанного Nick Sillito под этим вопросом, связывающимся с этим ответом, я изменил сценарий в том, что я ожидаю быть довольно варварским способом (я - неграмотный CL сам); я просто заменил эту всю часть:

    dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

с

    systemctl suspend

Как обозначено в комментарии, сделанном wjandreea: sleep 10 или подобное значение не должно быть удалено (как я первоначально сделал); без той строки измененный сценарий будет использовать больше питания, потому что вместо того, чтобы работать каждые 10 секунд, это будет максимально быстро - вверх нескольких дюжин раз в секунду.

В этой точке он система засыпает при выходе за предел набора уровня в строке

max="+75.0"

Поскольку я хочу более высокое значение, 82, сценарий, который я использую:

#!/bin/bash

while true; do
   val=$(sensors | awk '/temp1/ {print $2}')
   max="+82.0"
   if [[ "$val" > "$max" ]]; then
                        systemctl suspend

   fi
   sleep 10
   clear
   sensors
done
exit 0
3
ответ дан 7 December 2019 в 12:36

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

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