Linux CLI ํ๊ฒฝ์์ ๋ ธํธ๋ถ์ ๋ฐฐํฐ๋ฆฌ ๋ณดํธ ๋ชจ๋๋ฅผ ์ง์ ํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ ธํธ๋ถ ์ ์กฐ์ฌ๊ฐ ์ ๊ณตํ๋ ํ๋์จ์ด ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฐฐํฐ๋ฆฌ ๋ณดํธ ๋ชจ๋๋ ํน์ ์ ์กฐ์ฌ์ BIOS ์ค์ ์ด๋ ์ ์ฉ ์ํํธ์จ์ด๋ฅผ ํตํด ์ ๊ณต๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ด Linux์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋์ง ์์ ๊ฒฝ์ฐ,
์๋์ ๋ฐฉ๋ฒ์ผ๋ก ๋น์ทํ ํจ๊ณผ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
1. ๋ฐฐํฐ๋ฆฌ ์ถฉ์ ์๊ณ๊ฐ ์ค์
์ผ๋ถ ๋ ธํธ๋ถ์ Linux์์ ACPI(Advanced Configuration and Power Interface) ์ปค๋ ๋ชจ๋์ ํตํด **์ถฉ์ ์๊ณ๊ฐ(Charge Threshold)**์ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐํฐ๋ฆฌ๊ฐ 80% ์ด์ ์ถฉ์ ๋์ง ์๋๋ก ์ค์ ๊ฐ๋ฅํฉ๋๋ค.
์ ์ฉ ๊ฐ๋ฅ ๋ชจ๋ธ:
- Lenovo ThinkPad
- ์ผ๋ถ Dell ๋ฐ ASUS ๋ ธํธ๋ถ
- ๊ธฐํ ACPI ์ง์ ๋ชจ๋ธ
์ค์ ๋ฐฉ๋ฒ:
- ACPI ๋ชจ๋ ํ์ธcharge_control_end_threshold ๋๋ ์ ์ฌํ ํ์ผ์ด ์๋์ง ํ์ธํฉ๋๋ค.
-
์ฝ๋ ๋ณต์ฌls /sys/class/power_supply/BAT0/
- bash
- ์ถฉ์ ์๊ณ๊ฐ ์ค์ ์ ๋ช ๋ น์ ๋ฐฐํฐ๋ฆฌ๊ฐ 80% ์ด์ ์ถฉ์ ๋์ง ์๋๋ก ์ ํํฉ๋๋ค.
-
bash์ฝ๋ ๋ณต์ฌecho 80 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold
- ์๊ตฌ ์ค์ rc.local์ด๋ udev ๊ท์น์ ํตํด ๋ถํ ์ ์๋์ผ๋ก ์ค์ ๋๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
-
bash์ฝ๋ ๋ณต์ฌecho 'echo 80 > /sys/class/power_supply/BAT0/charge_control_end_threshold' | sudo tee -a /etc/rc.local
2. ์ถฉ์ ๊ธฐ ์๋ ์ ์ด ์คํฌ๋ฆฝํธ
๋ฐฐํฐ๋ฆฌ ๋ณดํธ ๋ชจ๋๊ฐ ํ๋์จ์ด์ ์ผ๋ก ์ง์๋์ง ์๋ ๊ฒฝ์ฐ, ์ถฉ์ ๊ธฐ๋ฅผ ์๋์ผ๋ก ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
์๋ ์๋ฆฌ:
- ํ์ฌ ๋ฐฐํฐ๋ฆฌ ์ถฉ์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ์ฌ, ์ถฉ์ ๋์ด ์ผ์ ์์ค์ ๋๋ฌํ๋ฉด ์ถฉ์ ๊ธฐ๋ฅผ ๊บผ๋ ๋๋ค.
- ๋ฐฐํฐ๋ฆฌ ์ถฉ์ ์ด 20% ์ดํ๋ก ๋จ์ด์ง๋ฉด ๋ค์ ์ถฉ์ ๊ธฐ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
์คํฌ๋ฆฝํธ ์์ฑ:
#!/bin/bash
# ์ถฉ์ ์๊ณ๊ฐ
MAX_CHARGE=80 MIN_CHARGE=20
# ๋ฐฐํฐ๋ฆฌ ์ํ ํ์ผ(ACPI ์ ๋ณด ๊ฒฝ๋ก)
BATTERY_CAPACITY_PATH="/sys/class/power_supply/BAT0/capacity" BATTERY_STATUS_PATH="/sys/class/power_supply/BAT0/status" while true; do
# ํ์ฌ ๋ฐฐํฐ๋ฆฌ ์ฉ๋ ์ฝ๊ธฐ
CURRENT_CAPACITY=$(cat "$BATTERY_CAPACITY_PATH") CURRENT_STATUS=$(cat "$BATTERY_STATUS_PATH") if [[ "$CURRENT_STATUS" == "Charging" && "$CURRENT_CAPACITY" -ge $MAX_CHARGE ]]; then echo "์ถฉ์ ๊ธฐ ๋ถ๋ฆฌ ๊ถ์ฅ: ๋ฐฐํฐ๋ฆฌ๊ฐ $MAX_CHARGE% ์ด์์
๋๋ค." elif [[ "$CURRENT_STATUS" == "Discharging" && "$CURRENT_CAPACITY" -le $MIN_CHARGE ]]; then echo "์ถฉ์ ๊ธฐ ์ฐ๊ฒฐ ๊ถ์ฅ: ๋ฐฐํฐ๋ฆฌ๊ฐ $MIN_CHARGE% ์ดํ์
๋๋ค." fi
# 5๋ถ ์ฃผ๊ธฐ๋ก ํ์ธ
sleep 300 done
์คํ ๋ฐฉ๋ฒ:
- ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํ๊ณ ์คํ ๊ถํ ๋ถ์ฌ:
bash์ฝ๋ ๋ณต์ฌchmod +x battery_manager.sh ./battery_manager.sh
- ์๋ฒ์์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ:
bash์ฝ๋ ๋ณต์ฌnohup ./battery_manager.sh &
3. BIOS ์ ๋ฐ์ดํธ ๋ฐ ์ ์กฐ์ฌ ํด ํ์ธ
๋ฐฐํฐ๋ฆฌ ๋ณดํธ ๋ชจ๋๋ BIOS๋ ํ์จ์ด ์ ๋ฐ์ดํธ๋ฅผ ํตํด ํ์ฑํ๋ ์ ์์ต๋๋ค. ๋ค์์ ํ์ธํ์ธ์:
- ์ ์กฐ์ฌ ๊ณต์ ์ง์ ํ์ด์ง์์ ์ต์ BIOS/ํ์จ์ด๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.
- ์ผ๋ถ ์ ์กฐ์ฌ๋ Linux์ฉ ์ ์ฉ ์ ํธ๋ฆฌํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. (์: tlp ๋๋ thinkpad_acpi ๋ฑ)
4. TLP(Thermal Power Management) ์ฌ์ฉ
TLP๋ Linux์์ ์ ๋ ฅ ๊ด๋ฆฌ๋ฅผ ์ต์ ํํ๋ ๋๊ตฌ๋ก, ๋ฐฐํฐ๋ฆฌ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ค์น ๋ฐ ์ค์ :
- TLP ์ค์น (Ubuntu ์์):
-
์ฝ๋ ๋ณต์ฌsudo apt install tlp
- bash
- ๋ฐฐํฐ๋ฆฌ ๋ณดํธ ์ค์ : /etc/tlp.conf ํ์ผ์ ์ด๊ณ , ๋ค์ ๋ด์ฉ์ ์ถ๊ฐ ๋๋ ์์ :
-
bash์ฝ๋ ๋ณต์ฌSTART_CHARGE_THRESH_BAT0=20 STOP_CHARGE_THRESH_BAT0=80
- TLP ์ฌ์์:
-
bash์ฝ๋ ๋ณต์ฌsudo systemctl restart tlp
์ํ ํ์ธ:
TLP๊ฐ ์ ์ฉ ์ค์ธ์ง ํ์ธ:
5. ๋ฌผ๋ฆฌ์ ํด๊ฒฐ์ฑ
- ๋ฐฐํฐ๋ฆฌ ๋ถ๋ฆฌ: ๋ฐฐํฐ๋ฆฌ๊ฐ ์ฐฉํ์์ด๋ผ๋ฉด ์์ ํ ๋ถ๋ฆฌํ๊ณ , ์ด๋ํฐ๋ง ์ฌ์ฉํฉ๋๋ค.
- ํ์ด๋จธ ํ๋ฌ๊ทธ: ์ผ์ ์๊ฐ ์ดํ ์ ์์ ์ฐจ๋จํ๋ ํ์ด๋จธ ํ๋ฌ๊ทธ๋ฅผ ์ฌ์ฉํด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ถฉ์ ์ ์ ํํฉ๋๋ค.
์์ฝ
- ACPI๋ฅผ ํ์ฉํ ์ถฉ์ ์๊ณ๊ฐ ์ค์ : ๊ฐ์ฅ ํจ๊ณผ์ ์ด๊ณ ๊ฐ๋จํ ๋ฐฉ๋ฒ.
- TLP ์ฌ์ฉ: ์์คํ ์ ๋ฐ์ ์ ๋ ฅ ๊ด๋ฆฌ ์ต์ ํ.
- ์ถฉ์ ๊ธฐ ์ ์ด ์คํฌ๋ฆฝํธ: ํ๋์จ์ด ์ ์ฝ์ ๊ทน๋ณตํ๊ธฐ ์ํ ๋์.
- BIOS ์ ๋ฐ์ดํธ ํ์ธ: ํ๋์จ์ด ์ ์กฐ์ฌ๊ฐ ์ ๊ณตํ๋ ์๋ฃจ์ ํ์ฉ.
์ด ์ค ACPI ๋ชจ๋์ด ์ง์๋๋ค๋ฉด ๊ฐ์ฅ ์ง๊ด์ ์ด๊ณ ํ์คํ ๋ฐฉ๋ฒ์ ๋๋ค.