Проблема:
В Ubuntu 16.04 я выполняю свой сценарий оболочки для уменьшения масштаб моей частоты CPU, чтобы быть 1600000, и ее регулятор, чтобы быть "пространством пользователя":
sudo /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh 1600000
который пишет 1600000 и "пространство пользователя" к /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
и /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
соответственно.
Однако после приостановки и затем пробуждения моей Ubuntu, частота CPU вернулась до 2 667 000, потому что /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
переписывается некоторой неизвестной программой к 2667000. Я хотел бы, чтобы частота CPU была сохранена по телефону 1600000 после возобновления от приостановки.
Предварительное решение:
Я попробовал одно решение от https://superuser.com/a/733336/9265 (см. ниже), и добавил файл /etc/pm/sleep.d/20_cpu_freq
, чье содержание:
#!/bin/sh
# upon resume from suspension, scale down the cpu freq
case "$1" in
thaw|resume)
/home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh 1600000
;;
esac
и сделайте это исполняемым файлом chmod a+x *
так, чтобы его разрешение было -rwxrwxr-x
. Но это не уменьшает масштаб частоты CPU до 1600000 после возобновления от приостановки.
/etc/pm/sleep.d/20_cpu_freq
на самом деле выполненный при возобновлении от приостановки? Как я могу проверить это?
/etc/pm/sleep.d/20_cpu_freq
переопределенный некоторым другим конфигурационным файлом?
Нет никакого другого сценария под /etc/pm/sleep.d/
который имеет дело с частотой CPU.
Существует сценарий системного значения по умолчанию /usr/lib/pm-utils/sleep.d/94cpufreq
, который имеет дело с частотой CPU (см. ниже для ее содержания). Кто-то знает то, что делает сценарий? Это переопределяет, или это переопределяется /etc/pm/sleep.d/20_cpu_freq
? (Обратите внимание на это, если я переименовываю /etc/pm/sleep.d/20_cpu_freq
кому: /etc/pm/sleep.d/95cpufreq
или /etc/pm/sleep.d/93cpufreq
, для изменения порядка между ним и /usr/lib/pm-utils/sleep.d/94cpufreq
, 'оба все еще не уменьшают масштаб частоты CPU до 1600000 после возобновления от приостановки.)
В /usr/lib/pm-utils/sleep.d/94cpufreq
, это не работает также, Если я добавляю /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh 1600000
после thaw_cpufreq
в случае resume|thaw)
.
Куда я буду работать /home/t/program_files/hardware/cpu/cpuFreq/changeCpuFreq.sh 1600000
, если не в /etc/pm/sleep.d/20_cpu_freq
?
Содержание /usr/lib/pm-utils/sleep.d/94cpufreq
#!/bin/sh
# Ensure cpu governor is set to something sane.
# TODO: Which of the cpu governors is still insane? File bugs against
# those that are.
. "${PM_FUNCTIONS}"
[ -d /sys/devices/system/cpu/ ] || exit $NA
hibernate_cpufreq()
{
( cd /sys/devices/system/cpu/
for x in cpu[0-9]*; do
# if cpufreq is a symlink, it is handled by another cpu. Skip.
[ -L "$x/cpufreq" ] && continue
gov="$x/cpufreq/scaling_governor"
# if we do not have a scaling_governor file, skip.
[ -f "$gov" ] || continue
# if our temporary governor is not available, skip.
grep -q "$TEMPORARY_CPUFREQ_GOVERNOR" \
"$x/cpufreq/scaling_available_governors" || continue
savestate "${x}_governor" < "$gov"
echo "$TEMPORARY_CPUFREQ_GOVERNOR" > "$gov"
done )
}
thaw_cpufreq()
{
( cd /sys/devices/system/cpu/
for x in cpu[0-9]*/cpufreq/scaling_governor ; do
[ -f "$x" ] || continue
state_exists "${x%%/*}_governor" || continue
restorestate "${x%%/*}_governor" > "$x"
done )
}
case "$1" in
suspend|hibernate)
hibernate_cpufreq
;;
resume|thaw)
thaw_cpufreq
;;
*) exit $NA
;;
esac
Скопированный с https://superuser.com/a/733336/9265
Из страницы справочника
pm-action(8)
:/etc/pm/sleep.d, /usr/lib/pm-utils/sleep.d Programs in these directories (called hooks) are combined and executed in C sort order before suspend and hibernate with as argument ´suspend´ or ´hibernate´. Afterwards they are called in reverse order with argument ´resume´ and ´thaw´ respectively. **If both directories contain a similar named file, the one in /etc/pm/sleep.d will get preference.** It is possible to disable a hook in the distribution directory by putting a non-executable file in /etc/pm/sleep.d, or by adding it to the HOOK_BLACKLIST configuration variable.
Таким образом Вы могли просто поместить сценарий оболочки как это:
#!/bin/bash case "$1" in suspend|hibernate) actions to take on suspend or hibernate ;; resume|thaw) other actions to trigger on resume ;; esac
в, например.
99-myhooks.sh
и сделайте это исполняемым файлом.BTW, можно уничтожить устаревшие соединения SSH вводом, Вводят ~. Войдите в сессию SSH.
Я просто нашел причину (см., Почему там эти различия между приостановкой DES и пополудни-utils? | Unix & Linux Stack Exchange), который также приводит к некоторым новым вопросам:
Я нашел некоторые различия между выполнением
pm-suspend
и нажатие на пункт меню "Suspend" в LXDE на Ubuntu 16.04
В обоих случаях я могу разбудить Ubuntu путем продвижения кнопки питания на моем ноутбуке, но в пути пунктом меню "Suspend" в LXDE, я должен обеспечить свой пароль для разблокирования экрана, в то время как в пути
pm-suspend
(иpm-hibernate
илиpm-suspend-hybrid
), я не должен.Согласно этому вопросу: Как делают меня, команды выполнения на приостанавливают/возвращают от, приостанавливают? | Суперпользователь, сценарии под
/usr/lib/pm-utils/sleep.d/
и/etc/pm/sleep.d/
как предполагается, выполняются после приостановки/спящего режима и возобновления/размораживания. Но это верно только, когда я работаюpm-suspend
(илиpm-hibernate
илиpm-suspend-hybrid
), и ложь, когда я нажимаю пункт меню "Suspend" в LXDE.Я раньше использовал Gnome, и я помню, что он совпал с в LXDE, кроме Gnome мог бы иметь, в спящем режиме, опция, кроме того, приостанавливает.
Интересно, почему существуют различия между приостановкой DES и пополудни-utils?
Может
pm-suspend
используйтесь способом так, чтобы резюме потребовало, чтобы пароль разблокировал экран?Может "приостановить" пункт меню в LXDE использоваться способом так, чтобы сценарии в
/usr/lib/pm-utils/sleep.d/
и/etc/pm/sleep.d/
выполняются после приостановки/спящего режима и возобновления/размораживания?Спасибо.