电源插入或拔出时如何运行脚本?


8

由于某些原因,当我插入或拔出电源时,笔记本电脑的屏幕亮度不会更新。我已经看过很多解决该问题的方法,但是似乎都没有一个很好的方法。因此,我没有失望而放弃,而是决定尝试将其转变为一种学习体验,看看我是否无法编写一个为我做的脚本。

我当然尝试在互联网的帮助下自己弄清楚这个问题,但是对于bash脚本和Ubuntu来说,我还很陌生,所以我走得很远。

我能弄清楚的是,我能找到电池的状态

$ upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state"
state:     charging/discharging

取决于是否插入了AC适配器。我不知道它是否有用,但这还是很酷的,而且我以前也不知道如何使用grep,因此学习到底是一件很有趣的事情。

无论如何,有没有一种比较干净的方法来做到这一点?所谓“干净的方式”,我只是指的是一种可以理解bash脚本经验有限的人的方式。

我发现一个很好的答案是这个类似的问题,它说如下:

插入/拔出交流适配器时,脚本中的脚本/etc/pm/power.d会使用>参数调用:“ true”(如果使用电池供电)或“ false”(如果使用电源>适配器运行)。

问题是我不知道如何从脚本中访问该参数。因此,我想这全都归结为一个非常简单的问题,但是我认为无论如何如果人们有更好的解决方案,我还是会发布该问题。

Answers:


5

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

编辑: [由KasiyA建议]

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 

使脚本无限运行是不好的做法,还是定期发生并内置在系统中的某些东西?我想我正在寻找某种触发器,但是如果这个触发器可行,那么它比我想象的要简单得多。
贾斯珀

@TheQZ:我觉得“souravc”给予了基本idea..you可以写自己在此基础上:)
heemayl

@TheQZ虽然可以永久运行,但是每10秒仅激活一次(您可以增加检查时间)。看一下如何重复每个x间隔命令的问题。否则,您需要编写自己的守护程序,这对于初学者来说非常复杂。
souravc

@TheQZ您可以将souravc的答案用作cron作业。看到的第二部分这个答案雷
αғsнιη

2
更好的方法是使用adev规则,如askubuntu.com/questions/613741/…中的
Anthony Wong
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.