Cody Blog

Software development

Linux在充放電切換時執行特定指令

Linux筆電在充放電的時侯可以執行特定指令。例如我們想增加電池的使用時間,可以在電池放電的時侯,把一些較消耗資源的背景程式先暫時暫停,等插回AC電源的時侯再重新開始。這邊以暫停Insync為例:

方法一 /etc/pm/power.d

我們可以放script放到/etc/pm/power.d來達成,當進入電池模式的時侯會帶true參數,而離開電池模式的時侯會帶false參數,只要新增一個檔案,例如/etc/pm/power.d/00-powersaving加入以下內容,實際指令就依照自己的需求修改:

case $1 in
    true)
        echo "Enable screen power saving"
        sudo -u cody insync pause_syncing
    ;;
    false)
        echo "Disable screen power saving"
        sudo -u cody insync pause_syncing
    ;;
esac

最後記得再加上執行權限sudo chmod +x /etc/pm/power.d/00-powersaving

方法二 /etc/acpi/power.sh

Linux 有一個指令 on_ac_power,如果回傳0代表是AC,如果是用電池的話,則回傳1,例如:

On AC Power

:::bash
$ on_ac_power 
$ echo $?
0

On Battery

:::bash
$ on_ac_power 
$ echo $?
1

所以透過這個指令,我們就可以修改/etc/acpi/power.sh把下列 script 加到最前面來達到效果

:::bash
if on_ac_power; then
    # On AC
    sudo -u cody insync resume_syncing
else
    # On Batter
    sudo -u cody insync pause_syncing
fi

上面兩個方法都可以達到要求,但是實際測試/etc/acpi/power.sh在切換時會重覆執行很多次,所以我個人較偏好方法一。

Referece:

Related Posts

Comments