Этот скрипт работал раньше, затем был обновлен до 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?
Я решил голосовать, чтобы закрыть это и радикально обновить другой вопрос, где я ожидаю ответ.
Поскольку ошибка была 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