Tôi muốn điều này dựa trên hệ điều hành, vì vậy tôi không cần kết nối internet hoặc trình duyệt mở, v.v. Chỉ cần điều gì đó có thể xảy ra trong nền
Cách dễ nhất để làm điều đó là với một ứng dụng, nhưng đây là cách thực hiện chỉ với các lệnh hệ điều hành tích hợp. Tôi biết bạn muốn nó được điều khiển theo sự kiện, nhưng tôi không chắc làm thế nào để thực hiện điều đó, vì vậy đây là một cách để kiểm tra mức pin, sau đó làm một việc khác nếu nó ở trên / dưới ngưỡng.
Bạn có thể xem xét một launchd
quá trình, về cơ bản đây là một nhiệm vụ theo lịch trình chạy mỗi x
phút. Chúng thường được sử dụng bởi người dùng cao cấp, nhưng không quá khó để thiết lập. Bạn định cấu hình tác vụ theo lịch trình launchd với tệp .plist mà bạn đặt vào thư mục này: Macintosh HD\Library\LaunchDaemons
và đây là cách bạn cấu trúc tệp .plist;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Debug</key>
<true/>
<key>ExitTimeOut</key>
<integer>120</integer>
<key>Label</key>
<string>com.me.BatteryInfo</string>
<key>ProgramArguments</key>
<array>
<string>/Users/yourusername/batt.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
Nếu bạn lưu tệp đó như com.me.BatteryInfo
trong LaunchDaemons
thư mục được đề cập ở trên, nó sẽ tạo một tác vụ theo lịch trình chạy cứ sau 30 phút. Số, 1800
trực tiếp ở trên </dict>
là thời gian tính bằng giây của tần suất bạn muốn tác vụ chạy. Nơi nó nói <string>/Users/yourusername/batt.sh</string>
là nơi bạn chỉ định tập lệnh nào chạy theo lịch trình. Bạn phải rời đi <string>
và </sting>
nguyên vẹn.
Dòng <string>com.me.BatteryInfo</string>
này là tên duy nhất của nhiệm vụ theo lịch trình. Nếu bạn định tạo nhiều hơn một, hãy đảm bảo mỗi .plist có một tên duy nhất ở đây.
Điều tiếp theo bạn cần làm là thay đổi quyền sở hữu của .plist thành root
. Đây là một tính năng bảo mật (để ngăn chặn phần mềm / người dùng tạo các tác vụ độc hại theo lịch trình, tôi giả sử). Để thay đổi quyền sở hữu tệp, hãy thực hiện sudo chown root \Library\LaunchDaemons\yourtask.plist
(thay thế yourtask.plist bằng tên tệp thực tế của .plist bạn đã tạo). Nhiệm vụ này sẽ nhắc bạn nhập mật khẩu.
Bây giờ bạn cần tạo tập lệnh sẽ chạy định kỳ. Bạn cần tạo một tệp .sh (tập lệnh bash) để báo cho máy tính biết phải làm gì. Để tạo tệp .sh, hãy mở trình soạn thảo văn bản cho lập trình viên, chẳng hạn như Sublime Text hoặc Komodo Edit . KHÔNG sử dụng Chỉnh sửa văn bản, vì nó thường thêm văn bản vào các tệp sẽ can thiệp vào tập lệnh của bạn. Chỉnh sửa văn bản không thực sự được sử dụng cho mã.
Tạo một tập lệnh (tệp .sh) với đoạn mã sau;
#!/bin/sh
percent=$(ioreg -l | awk '$3~/Capacity/{c[$3]=$5}END{OFMT="%.3f";max=c["\"MaxCapacity\""];print(max>0?100*c["\"CurrentCapacity\""]/max:"?")}')
if [ $percent > 95 ]
then
echo 'charged.'
fi
exit 0
Thay thế echo 'charged.'
bằng (các) lệnh đầu cuối bạn muốn chạy khi pin được sạc. open /Applications/Notes.app
sẽ mở ứng dụng Ghi chú; bạn có thể thay đổi thư mục để mở một ứng dụng khác.
$percent > 95
Điều này cho biết dòng tiếp theo chỉ chạy khi pin được sạc nhiều hơn 95
. Bạn có thể thay đổi điều này thành bất cứ điều gì bạn muốn. Mức pin ở đây thường sẽ hơi khác với mức được hiển thị trong thanh menu ở trên cùng. Nếu bạn muốn 'chạy khi pin được sạc đầy', tôi khuyên bạn nên để mức này là> 95 . Nếu bạn muốn tác vụ chạy khi pin của bạn xuống dưới 20% chẳng hạn, hãy đổi nó thành$percent < 20
LƯU Ý: Vì đây là tác vụ theo lịch trình, tập lệnh của bạn sẽ chạy mỗi x
số phút. Điều này có nghĩa là nếu bạn đặt open \Applications\Notes.app
bên trong tập lệnh của mình, ứng dụng Ghi chú sẽ bắt đầu mỗi x
phút (nếu pin của bạn được sạc)
Nhiệm vụ này sẽ chạy ngay cả khi không có ai đăng nhập.
Tôi biết bạn đã hỏi câu hỏi này một thời gian trước đây, nhưng hy vọng điều này sẽ giúp được ai đó.