由于某种原因,当我插入或拔出电源时,我的笔记本电脑的屏幕亮度不会更新。我研究了不少解决这个问题的方法,但似乎都不太管用。所以,我没有绝望和放弃,而是决定尝试把这变成一次学习经历,看看我能否编写一个脚本来帮我解决这个问题。
我尝试自己解决这个问题,当然也借助了互联网的一些帮助,但是我对 bash 脚本和 Ubuntu 还很陌生,所以并没有取得很大进展。
我能想到的是,我可以查找电池状态和
$ upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state"
state: charging/discharging
取决于交流适配器是否插入。我不知道这是否有用,但它很酷,我grep
以前不知道如何使用,所以管他呢,学习很有趣。
无论如何,有没有一种比较干净的方法来做到这一点?我说的“干净的方法”只是指那些具有有限 bash 脚本经验的人可以理解的方法。
我发现一个类似的问题,有一个好的答案是这个,内容如下:
当您插入/拔出交流适配器时,脚本将
/etc/pm/power.d
被调用并带有一个参数:“true”(如果您使用电池运行)或“false”(如果您使用电源适配器运行)。
问题是我不知道如何在脚本中访问该参数。所以,我想这可以归结为一个非常简单的问题,但无论如何我还是想发布这个问题,以防人们有更好的解决方案。
答案1
您可以使用on_ac_power
在电源打开或关闭时运行脚本。
在终端中尝试以下操作。
$ on_ac_power
$ echo $?
0 ## Laptop on ac power
$ on_ac_power
$ echo $?
1 ## Laptop on battery (not on ac power)
基于此,你可以将脚本制作为,
#!/bin/bash
while true
do
if on_ac_power; then
do_something ## Laptop on power
else
do_something_else ## Laptop on battery
fi
sleep 10 ## wait 10 sec before repeating
done
编辑:
cron job
定期运行脚本而不是使用无限循环会更好。
将脚本另存为myscript.sh
并将以下内容放入其中,
#!/bin/bash
if on_ac_power; then
do_something
else
do_something_else
fi
使脚本可从终端执行chmod +x /path/to/myscript.sh
。打开您的个人crontab
目录EDITOR=gedit crontab -e
并在其中添加以下行以每分钟运行一次脚本。
* * * * * /path/to/myscript.sh