#!/bin/bash
# Get the battery percentage for battery 0
battery0_percent=$(cat /sys/class/power_supply/BAT0/capacity)
# Get the battery percentage for battery 1
battery1_percent=$(cat /sys/class/power_supply/BAT1/capacity)
# Threshold level
threshold=10
# Check if either battery is less than 10%
if [ "$battery0_percent" -lt "$threshold" ] || [ "$battery1_percent" -lt "$threshold" ]; then
# Display a Zenity warning
zenity --warning --text "Battery level is below 10% on one or both batteries!"
fi
このスクリプトは、バッテリーの1つが10%未満に低下すると警告を送信します。
必要なときに通知を受け取るために、Linuxシステムのバックグラウンドでこのスクリプトをどのように実行できますか?
答え1
これを行う方法は2つあります。
コマンドの後にアンパサンドを追加します。
./battery-script.sh &
シェルからサブプロセスを作成すると、端末を閉じてもコマンドは実行され続けます。
シェルからログアウトしても何かを維持するには、コマンドの前にnohupを追加します。
nohup ./battery-script.sh
また、コマンド出力を「nohup.out」というファイルにリダイレクトします。
さらに一歩進んで起動時にこのスクリプトを実行するには、いくつかの異なるオプションがあります。
ディスプレイサーバーを起動するたびにこのスクリプトを起動するには:
x11を使用します。
x11が起動するたびにスクリプトを実行するには、この行を最後に追加します./battery-script.sh &
(~/.xinitrc
zenity警告行があることを考慮してこの場合は必要なものかもしれません)、
waylandを実行している場合はwmに依存し、swayの場合はconfig.d/autostart_applications
ディスプレイサーバーが起動する前にスクリプトを実行するには/etc/profile.d
答え2
バックグラウンドで定期的に実行するシステムタイマーデバイスを作成します。
/etc/systemd/system/my-batterywatcher.service
[Unit]
Description=my battery watcher
[Service]
Type=oneshot
ExecStart=/bin/bash /path/to/battery-watcher.sh
/etc/systemd/system/my-batterywatcher.timer
[Unit]
Description=my battery watcher
[Timer]
# run every minute
OnCalendar=*-*-* *:*:00
Unit=my-batterywatcher.service
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable my-batterywatcher.timer
答え3
答え4
質問がありますか?予約されたこと働く?