如何在电源插入或输出时运行脚本?
出于某种原因,当我插入或拔出电源时,笔记本电脑的屏幕亮度不会更新。 我已经针对这个问题看了很多解决方案,但它们似乎都没有奏效。 所以,我没有绝望和放弃,而是决定尝试将其变成一种学习体验,看看我是否能够编写一个能够帮助我的脚本。
当然,我试着通过互联网帮助解决这个问题,但是我对于编写脚本和Ubuntu一般都是新手,所以我没有走得太远。
我能弄明白的是我能找到电池的状态
$ upower -i /org/freedesktop/UPower/devices/battery_BAT1 | grep -E "state" state: charging/discharging
取决于AC适配器是否插入。我不知道这是否有用,但它有点酷,而且之前我不知道如何使用grep
,所以到底是什么,学习很有趣。
无论如何,有没有一个干净的方式来做到这一点? 通过“干净的方式”,我只是指一种具有有限的bash脚本体验的方式可以理解的方式。
我发现一个类似的问题有一个很好的答案是这个问题 ,其中说明如下:
当您插入/拔出AC适配器时,/
/etc/pm/power.d
的脚本将被调用>参数:“true”(如果您使用电池运行)或“false”(如果您使用电源运行) >适配器)。
问题是我不知道如何从脚本中访问该参数。 所以,我想这一切都归结为一个非常简单的问题,但我认为无论如何我都会发布这个问题,万一人们有更好的解决方案。
打开或关闭电源时,可以使用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
使脚本可执行。 以EDITOR=gedit crontab -e
打开您的个人crontab
,并在其中附加以下行以每分钟运行您的脚本。
* * * * * /path/to/myscript.sh