Câu trả lời:
Tôi chỉ muốn trả lời khi tôi sử dụng lời khuyên trên trang này để định cấu hình crontab -e
công việc của riêng tôi .
Tôi đang chạy LubFi (đáng tin cậy) và những thứ trên không hoạt động với tôi, nhưng với một chút tinh chỉnh thì nó đã hoạt động. Mức độ kinh nghiệm (trong) của tôi là tôi tương đối có khả năng đọc các tập lệnh và lệnh cơ bản nhưng ít có khả năng viết chúng từ đầu trong linux disto. Tôi đề cập đến điều đó bởi vì nếu tôi có thể lắp ráp một báo động pin hoạt động, hầu hết các bạn đọc nó cũng có thể như vậy!
VẬY .... kịch bản và một lời giải thích cơ bản ....
Theo các bài viết ở trên của Glutanimate và Scott Goodgame (cảm ơn các bạn!), Về cơ bản tôi đã làm như sau:
Để có được mpg123 và có thể phát âm thanh:
sudo apt-get install acpi mpg123
Tập tin để mở để viết lệnh:
crontab -e
Lệnh nhập vào cuối tập tin:
*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Dấu hoa thị khi bắt đầu
Năm dấu sao biểu thị tần số để chạy các lệnh.
*/1 * * * *
có nghĩa là 'chạy cái này mỗi phút'.
NẾU / THEN / FI:
IF [ stuff inside these brackets ] ; THEN do something ; FI
Hầu hết các bạn, tôi tưởng tượng, rất quen thuộc với các câu lệnh IF / THEN. FI ở cuối kết luận câu lệnh IF
Phát âm thanh:
mpg123 /home/andy/Alarm.mp3
điều này chỉ đơn giản là sử dụng mpg123
để phát một tập tin được gọi Alarm.mp3
trong thư mục nhà của tôi /home/andy/
.
Thông tin về pin đầu ra:
acpi -b
Điều này chỉ đơn giản là đầu ra trạng thái pin. Trên máy tính xách tay của tôi, nó mang lại kết quả như:
Battery 0: Discharging, 74%, 02:35:18 remaining
Lệnh ống để awk
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
Được rồi, vì vậy, chúng tôi dẫn đầu ra của trạng thái pin ở trên và in giá trị thứ hai từ đầu đến cuối (NF-2) mà trong ví dụ trên là '74% '. Tuy nhiên, chúng ta cần xóa 'phần trăm' -0 . Chúng tôi muốn so sánh giá trị hiện tại với giá trị 15 -lt "15" . Vì vậy, để tóm tắt bằng tiếng Anh đơn giản,
NẾU giá trị của pin là ÍT HƠN 15% THÌ phát một tệp âm thanh
Tôi đánh giá cao tôi đã giảm bớt phần nào và có lẽ lời giải thích của tôi có thể được cải thiện, nhưng hy vọng nó sẽ giúp người khác hiểu cách thêm báo thức cho pin và tránh máy tính xách tay của họ đột ngột tắt nguồn!
Chúc may mắn!
Được rồi ... vậy hóa ra khi laptop của tôi đang sạc, đầu ra của
acpi -b
Là:
Battery 0: Charging, 35%, 01:04:08 until charged
trong khi trên pin là
Battery 0: Discharging, 36%, 01:22:36 remaining
vì vậy sử dụng tham số được đề cập ban đầu của
print ( $(NF-2)-0)
bởi vì hãy nhớ rằng, bit giá trị NF chỉ định có bao nhiêu mục ngược từ cuối đầu ra để hiển thị, do đó, với đầu ra trên pin của
Battery 0: Discharging, 36%, 01:22:36 remaining
$(NF-2)
xuất ra '36% 'trong khi với máy tính xách tay đang sạc,
Battery 0: Charging, 35%, 01:04:08 until charged
$(NF-2)
đầu ra '00: 50: 12 ', tức là lượng thời gian còn lại cho đến khi được sạc.
Giá trị -0
sau trừ $(NF-2)
0 từ giá trị, vì vậy khi giá trị là phần trăm -0
thay đổi từ giá trị '36% 'thành' 36 '. Khi giá trị đầu ra được coi là không bằng số, chẳng hạn như đầu ra thời gian là '01: 04: 08 'như trên, giá trị -0
trả về là' 0 '. Vì vậy, bạn có thể thấy vấn đề của tôi - khi máy tính xách tay của tôi đang sạc, giá trị đầu ra luôn là '0'. Vì tôi muốn phát báo thức khi giá trị đầu ra nhỏ hơn 15, nó chuyển thành báo thức pin sẽ tắt sau mỗi một phút khi sạc!
Tôi đọc thêm một chút về đầu ra của awk
lệnh và hóa ra tôi không cần phải làm cho nó đọc giá trị thứ hai từ cuối, tôi có thể bắt đầu từ đầu đầu ra và bỏ qua. Điều này tốt hơn nhiều vì trạng thái pin của tôi bắt đầu giống nhau cho dù là sạc hay pin về số lượng tham số, tức là tham số thứ tư từ đầu luôn luôn là giá trị tính theo phần trăm.
VÌ ... để làm cho nó đọc giá trị thứ tư, lệnh thay đổi từ
awk ' { print ($(NF-2)-0)}'
đến
awk ' { print ($4)-0}'
hoặc trong vinh quang đầy đủ của nó:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Một lần nữa tôi hy vọng điều đó sẽ giúp được ai đó! Chúc may mắn và cảm ơn đã đọc!
Được rồi, vì vậy hãy thêm một chút nữa và tôi cũng đã tìm ra cách đặt âm lượng thành 100% và tắt tiếng trước khi phát báo thức - bởi vì hãy đối mặt với nó, điểm báo động của pin là gì nếu bạn không nghe thấy vì bạn ' Bạn đã đặt âm lượng ở mức thấp hoặc tắt tiếng?!
Dù sao, lệnh bạn cần là:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi
như bạn có thể thấy, tất cả những gì tôi đã làm được chèn chuỗi lệnh
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
( &&
chỉ liên kết nhiều lệnh với nhau)
Một lần nữa, chúc may mắn tất cả!
Được rồi, vì vậy ... một bản chỉnh sửa cuối cùng (hy vọng!) ... rõ ràng, dấu phần trăm là một dấu hiệu đặc biệt khi chạy các tác vụ cron. Do đó, bạn phải 'thoát' ký hiệu tỷ lệ phần trăm bằng cách đặt dấu gạch chéo ngược ( \
) trước mỗi dấu %
sao cho nó không (mis) được giải thích bởi trình bao.
Vì vậy, về cơ bản thay thế
100%
với
100\%
Do đó, lệnh bạn thực sự cần là:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then pactl set-sink-volume 0 100\% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi
phew hy vọng rằng nó sắp xếp nó cho bạn như nó đã dành cho tôi !! (cuối cùng!)
Bạn có thể thiết lập một công việc định kỳ sẽ kiểm tra trạng thái pin sau mỗi 5/10 phút và sau đó tùy thuộc vào phần trăm pin, nó sẽ phát một số âm thanh.
Để phát âm thanh, bạn có thể sử dụng
mpg123
tên tệp.mp3
Để cài đặt nó
sudo apt-get install mpg123
Để có được trạng thái pin từ dòng lệnh, bạn có thể sử dụng lệnh này
upower -i /org/freedesktop/UPower/devices/battery_BAT0
sử dụng grep
bạn có thể trích xuất thông tin chính xác như sau
upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"
Bây giờ bạn có thể đặt tất cả những thứ này vào tập lệnh shell (và cũng là if
điều kiện để kiểm tra xem trạng thái pin có thấp hơn 10% không) và chỉ cần đưa đường dẫn của tập lệnh shell này vào công việc định kỳ.
vì vậy cứ sau 5 phút (Bạn có thể thay đổi khoảng thời gian này), trạng thái pin của bạn sẽ được kiểm tra và nếu pin thấp hơn 10%, tệp âm thanh được cung cấp của bạn sẽ được phát!
Hi vọng điêu nay co ich!
Một cách dễ dàng để làm điều này là thêm một kiểm tra đơn giản vào crontab của bạn (cron là một hệ thống để chạy mọi thứ trên cơ sở thường xuyên, do người dùng xác định trong nền.)
Trước tiên, bạn cần cài đặt một máy nghe nhạc mp3 dòng lệnh và acpi để có thể đọc trạng thái pin.
Từ một thiết bị đầu cuối chạy sau đây để cài đặt các gói.
sudo apt-get install acpi mpg123
Tiếp theo, trong khi vẫn ở trong thiết bị đầu cuối, nhập crontab -e
và nhập phần sau vào cuối tệp. Chỉ cần thay đổi người dùng thành tên người dùng của bạn và .mp3 thành tên tệp của bạn trong thư mục chính của bạn.
*5 * * * * if [ `acpi |awk '{print substr($NF, 0, length($NF)-1)}'` -lt "10" ] ; then mpg123 /home/user/SuperCoolSound.mp3 ;fi
Nhấn Control-O (chữ cái) và Enter để lưu. Nhấn Control-x để thoát
Thêm những thứ bạn có thể muốn đọc ...
acpi |awk '{print substr($NF, 0, length($NF)-1)}'
-lt "10"]; sau đó aplay /home/felipelalli/Music/siren.wav; fi [: biểu thức số nguyên dự kiến: vẫn còn ~ acpi Pin 0: Xả, 9%, 00:17:56 còn lại
Thật ra tôi đã sử dụng câu trả lời của Andy Pyne nhưng nó không hiệu quả với tôi. Cron thực thi mã, nhưng nó không phát âm thanh. Cuối cùng tôi đã tìm ra giải pháp và chia sẻ nó ở đây:
Bước 1: Cài đặt mpg3
sudo apt-get install acpi mpg123
Bước 2:
Lưu lệnh sau vào~/bin/battery_alert
#!/bin/bash
PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if [ `acpi -b | awk ' { print ($3)}'` == "Discharging," ] ; then
# Discharging
# Monitor for low battery
if [ `acpi -b | awk ' { print ($4)-0}'` -le "15" ] ; then
pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_low.mp3 ;
fi
else
# Charging
if [ `acpi -b | awk ' { print ($4)-0}'` -eq "100" ] ; then
# Fully charged
pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_full.mp3 ;
fi
fi
Kịch bản này phát pin_low.mp3 nếu máy tính xách tay đang xả và sạc ít hơn hoặc bằng 15%. (Nếu nguồn AC được kết nối, nó sẽ không cảnh báo bạn). Mã này cũng thông báo cho bạn, nếu khoản phí là 100%. Nếu bạn không muốn cảnh báo về trạng thái được sạc đầy, hãy xóa phần khác khỏi mã này.
Bước 3: Tạo tập tin thực thi bằng lệnh sau.
chmod +x ~/bin/battery_alert
Bước 4: Thực thi tệp này bằng cron bằng cách thêm lệnh sau vào cuối tệp opend bằng crontrab -e
lệnh.
*/5 * * * * /home/user/bin/battery_alert
(Đừng quên có một dòng trống sau lệnh này)