Giới thiệu
Trong lab này, bạn sẽ học cách sử dụng lệnh acpid (Advanced Configuration and Power Interface daemon) trong Linux. Lệnh acpid chịu trách nhiệm giám sát và phản hồi các sự kiện liên quan đến nguồn điện, chẳng hạn như đóng nắp laptop, tạm dừng/tiếp tục hệ thống và nhấn nút nguồn. Bạn sẽ cấu hình acpid để giám sát các sự kiện nguồn và tạo trình xử lý sự kiện tùy chỉnh để tùy chỉnh hành vi của hệ thống dựa trên các sự kiện này. Lab này cung cấp các ví dụ thực tế và hướng dẫn từng bước để giúp bạn hiểu và sử dụng lệnh acpid một cách hiệu quả.
Tìm hiểu lệnh acpid và mục đích của nó
Trong bước này, chúng ta sẽ khám phá lệnh acpid (Advanced Configuration and Power Interface daemon) và hiểu mục đích của nó trong hệ thống Linux.
Lệnh acpid là một daemon lắng nghe các sự kiện ACPI và thực thi các script để phản hồi các sự kiện đó. ACPI (Advanced Configuration and Power Interface) là một tiêu chuẩn định nghĩa cách hệ điều hành có thể tương tác với phần cứng, đặc biệt là trong quản lý nguồn và kiểm soát nhiệt.
acpid daemon chịu trách nhiệm giám sát và phản hồi các sự kiện liên quan đến nguồn điện, chẳng hạn như đóng nắp laptop, tạm dừng/tiếp tục hệ thống và nhấn nút nguồn. Nó cho phép bạn tùy chỉnh hành vi của hệ thống dựa trên các sự kiện này.
Hãy bắt đầu bằng cách kiểm tra trạng thái của dịch vụ acpid:
sudo systemctl status acpid
Ví dụ đầu ra:
● acpid.service - ACPI Event Daemon
Loaded: loaded (/lib/systemd/system/acpid.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-04-24 12:34:56 UTC; 1 day 2h ago
Main PID: 456 (acpid)
Tasks: 1 (limit: 4915)
Memory: 1.1M
CGroup: /system.slice/acpid.service
└─456 /usr/sbin/acpid -c /etc/acpi/events -s /var/run/acpid.socket
Đầu ra cho thấy dịch vụ acpid đang chạy và được kích hoạt để tự động khởi động khi hệ thống khởi động.
Tiếp theo, hãy khám phá các trình xử lý sự kiện mặc định được cung cấp bởi dịch vụ acpid. Các trình xử lý sự kiện được định nghĩa trong thư mục /etc/acpi/events/
:
ls -l /etc/acpi/events/
Ví dụ đầu ra:
-rw-r--r-- 1 root root 75 Apr 24 12:34 default
-rw-r--r-- 1 root root 75 Apr 24 12:34 power-button
Các trình xử lý sự kiện default
và power-button
được cung cấp theo mặc định. Bạn có thể tùy chỉnh các trình xử lý sự kiện này hoặc tạo các trình xử lý mới để phù hợp với nhu cầu cụ thể của bạn.
Bây giờ, hãy xem nội dung của trình xử lý sự kiện power-button
:
cat /etc/acpi/events/power-button
Ví dụ đầu ra:
event=button/power.*
action=/etc/acpi/actions/power-button.sh
Trình xử lý sự kiện này chỉ định rằng khi nút nguồn được nhấn, script /etc/acpi/actions/power-button.sh
sẽ được thực thi.
Trong bước tiếp theo, chúng ta sẽ học cách cấu hình acpid để giám sát các sự kiện nguồn và tạo các trình xử lý sự kiện tùy chỉnh.
Cấu hình acpid để giám sát các sự kiện nguồn
Trong bước này, chúng ta sẽ cấu hình acpid daemon để giám sát các sự kiện nguồn và học cách tạo các trình xử lý sự kiện tùy chỉnh.
Đầu tiên, hãy tạo một trình xử lý sự kiện mới để giám sát sự kiện đóng nắp laptop:
sudo nano /etc/acpi/events/lid-close
Thêm nội dung sau vào tệp:
event=button/lid.*
action=/etc/acpi/actions/lid-close.sh
Trình xử lý sự kiện này sẽ thực thi script /etc/acpi/actions/lid-close.sh
bất cứ khi nào nắp laptop bị đóng.
Tiếp theo, tạo script lid-close.sh
:
sudo nano /etc/acpi/actions/lid-close.sh
Thêm nội dung sau vào script:
#!/bin/bash
logger "Laptop lid closed, suspending system..."
/usr/sbin/pm-suspend
Script này ghi một thông báo vào system log và sau đó tạm dừng hệ thống khi nắp laptop bị đóng.
Làm cho script có thể thực thi:
sudo chmod +x /etc/acpi/actions/lid-close.sh
Bây giờ, hãy kiểm tra trình xử lý sự kiện lid-close bằng cách đóng nắp laptop. Bạn sẽ thấy hệ thống tạm dừng sau vài giây.
Để tiếp tục hệ thống, chỉ cần mở nắp laptop.
Tạo trình xử lý sự kiện acpid tùy chỉnh
Trong bước cuối cùng này, chúng ta sẽ tạo một trình xử lý sự kiện acpid tùy chỉnh để chứng minh cách bạn có thể mở rộng chức năng của acpid daemon.
Hãy tạo một trình xử lý sự kiện mới để giám sát mức pin và thực hiện một hành động khi pin xuống dưới một ngưỡng nhất định.
Đầu tiên, tạo tệp trình xử lý sự kiện:
sudo nano /etc/acpi/events/low-battery
Thêm nội dung sau vào tệp:
event=battery.*
action=/etc/acpi/actions/low-battery.sh
Trình xử lý sự kiện này sẽ thực thi script /etc/acpi/actions/low-battery.sh
bất cứ khi nào mức pin thay đổi.
Tiếp theo, tạo script low-battery.sh
:
sudo nano /etc/acpi/actions/low-battery.sh
Thêm nội dung sau vào script:
#!/bin/bash
BATTERY_LEVEL=$(acpi -b | grep -P -o '[0-9]+%' | head -n 1 | sed 's/%//')
if [ "$BATTERY_LEVEL" -lt 20 ]; then
logger "Battery level below 20%, sending notification..."
notify-send "Low Battery" "Battery level is below 20%."
fi
Script này kiểm tra mức pin hiện tại bằng lệnh acpi
. Nếu mức pin dưới 20%, nó sẽ ghi một thông báo vào system log và gửi một thông báo trên desktop.
Làm cho script có thể thực thi:
sudo chmod +x /etc/acpi/actions/low-battery.sh
Bây giờ, hãy kiểm tra trình xử lý sự kiện low-battery bằng cách xả pin trên laptop của bạn. Khi mức pin xuống dưới 20%, bạn sẽ thấy thông báo xuất hiện trên desktop của bạn.
Tóm tắt
Trong lab này, chúng ta đã khám phá lệnh acpid (Advanced Configuration and Power Interface daemon) và mục đích của nó trong các hệ thống Linux. Chúng ta đã học rằng acpid chịu trách nhiệm giám sát và phản hồi các sự kiện liên quan đến nguồn điện, chẳng hạn như đóng nắp laptop, tạm dừng/tiếp tục hệ thống và nhấn nút nguồn. Chúng ta cũng đã xem xét các trình xử lý sự kiện mặc định được cung cấp bởi dịch vụ acpid và hiểu cách tùy chỉnh các trình xử lý sự kiện này hoặc tạo các trình xử lý mới để phù hợp với nhu cầu cụ thể của chúng ta.
Tiếp theo, chúng ta sẽ cấu hình acpid để giám sát các sự kiện nguồn và tạo các trình xử lý sự kiện tùy chỉnh để tự động hóa hành vi của hệ thống dựa trên các sự kiện này.