Je vous expose mon soucis, merci de me dire/déplacer si je ne suis pas dans la bonne section.
J'ai créé un script qui fait 2-3 choses concernant la gestion d'énergie sur mon portable (car systemd ne gère pas encore tout).
Le voici :
Code : Tout sélectionner
#!/bin/bash
#
# powersave
#
# Power saving script, simple and short.
# Can be customised by adding commands.
#
# Variables to edit to reflect your configuration
# Path to backlight file
declare -r backlight="/sys/class/backlight/acpi_video0/brightness"
# Brightness value for unplugged state
declare -r min_light=1
# Brightness value for plugged state (check for *your* hardware max value in /path/to/backlight/function/max_brightness)
declare -r max_light=5
# Modules to load/unload depending on AC state
#declare -r modules="bluetooth btusb uvcvideo"
# Path to battery state file
declare -r battery_state="/sys/bus/acpi/drivers/ac/ACPI0003:00/power_supply/AC/online"
function usage () {
echo "Usage: $0 [true|false]"
exit 1
}
if [ $# -lt 1 ]; then
usage
fi
# Function run when the AC battery is unplugged
function unplugged () {
# Log state
logger "Powersave state: Unplugged"
# Change screen brightness
echo $min_light > $backlight
# Unload power hungry modules
#modprobe -rs $modules
# Change CPU scaling governor
for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo powersave > $i
done
# Enter power save state for sound device
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
}
# Function run when the AC battery is plugged
function plugged () {
# Log state
logger "Powersave state: Plugged"
# Change screen brightness
echo $max_light > $backlight
# Load power hungry modules
#for m in $modules; do
# modprobe -s $m
#done
# Change CPU scaling governor
for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
echo performance > $i
done
# Quit power save state for sound device
echo 0 > /sys/module/snd_hda_intel/parameters/power_save
}
function guess_and_act () {
# Get online status and call appropriate function
[[ `cat $battery_state` -eq 1 ]] && plugged || unplugged
}
case "$1" in
true)
unplugged
;;
false)
plugged
;;
guess)
guess_and_act
;;
*)
usage
;;
esac
exit 0
# EoF
Code : Tout sélectionner
[Unit]
Description=Launch powersaving script
Wants=lxdm.service
After=multi-user.target lxdm.service
[Service]
User=root
Type=simple
ExecStart=/usr/local/bin/powersave guess
[Install]
WantedBy=graphical.target
Le problème est le suivant. Au boot, dans les log j'ai :
Code : Tout sélectionner
powersave[426]: /usr/local/bin/powersave: ligne 58 : echo: erreur d'écriture : Aucun périphérique ou adresse
En revanche, dès que je suis loggué, si je lance le script, cela fonctionne.
La question est donc, quel est le timing des "units", et pourquoi le script ne fonctionne pas en étant lancé après lxdm, alors qu'il fonctionne lorsque je suis loggué sous X ?
Merci à vous...