#!/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
이 스크립트는 배터리 중 하나가 10% 미만으로 떨어지면 경고를 보냅니다.
필요할 때 알림을 받을 수 있도록 Linux 시스템의 백그라운드에서 이 스크립트를 어떻게 실행할 수 있습니까?
답변1
이를 수행하는 방법에는 두 가지가 있습니다.
명령 뒤에 앰퍼샌드를 추가합니다.
./battery-script.sh &
셸에서 하위 프로세스를 생성하면 터미널을 닫아도 명령이 계속 실행됩니다.
셸에서 로그아웃한 후에도 무언가를 유지하려면 명령 앞에 nohup을 추가하면 됩니다.
nohup ./battery-script.sh
또한 명령 출력을 "nohup.out"이라는 파일로 리디렉션합니다.
한 단계 더 나아가 시작 시 이 스크립트를 실행하려면 몇 가지 다른 옵션이 있습니다.
디스플레이 서버를 시작할 때마다 이 스크립트를 시작하려면:
x11을 사용하십시오.
x11이 부팅될 때마다 스크립트를 실행하려면 이 줄을 ./battery-script.sh &
끝에 추가하세요 ~/.xinitrc
(zenity 경고 줄이 있다는 점을 고려하면 이 경우 원하는 것일 수도 있음)
wayland를 실행하는 경우 wm 에 따라 다르며 sway의 경우 .config/ 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
질문이 있으신가요?예약 된 일들일하다?