Jawaban:
Saya hanya ingin membalas karena saya menggunakan saran pada halaman ini untuk mengkonfigurasi crontab -e
pekerjaan saya sendiri .
Saya menjalankan Lubuntu (tepercaya) dan hal di atas tidak berhasil untuk saya, tetapi dengan sedikit penyesuaian, itu berhasil. Tingkat pengalaman saya (dalam) adalah bahwa saya relatif mampu membaca skrip dan perintah dasar tetapi kurang mampu menulisnya dari awal di disto linux. Saya menyebutkan bahwa karena jika saya dapat menyalakan alarm baterai yang berfungsi dengan baik, sebagian besar dari Anda yang membaca ini juga dapat melakukannya!
JADI .... skrip dan penjelasan dasar ....
Sesuai posting di atas oleh Glutanimate dan Scott Goodgame (terima kasih kawan!), Pada dasarnya saya melakukan hal berikut:
Untuk mendapatkan mpg123 dan dapat memutar audio:
sudo apt-get install acpi mpg123
File yang akan dibuka untuk menulis perintah:
crontab -e
Perintah untuk masuk di akhir file:
*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Tanda bintang di awal
Kelima tanda bintang mewakili frekuensi untuk menjalankan perintah.
*/1 * * * *
berarti 'jalankan ini setiap menit'.
JIKA / LALU / FI:
IF [ stuff inside these brackets ] ; THEN do something ; FI
Sebagian besar dari Anda, saya kira, sangat akrab dengan pernyataan IF / THEN. FI pada akhirnya menyimpulkan pernyataan IF
Memutar audio:
mpg123 /home/andy/Alarm.mp3
ini hanya digunakan mpg123
untuk memutar file yang disebut Alarm.mp3
terletak di direktori home saya /home/andy/
.
Info keluaran baterai:
acpi -b
ini hanya mengeluarkan status baterai. Di laptop saya itu menghasilkan hasil seperti:
Battery 0: Discharging, 74%, 02:35:18 remaining
Perintah pipa ke awk
| awk ' { print ( $(NF-2)-0)}'` -lt "15"
Oke, jadi kami menyalurkan output status baterai di atas dan mencetak nilai kedua-dari-akhir (NF-2) yang dalam contoh di atas adalah '74% '. Namun, kita perlu menghapus 'persentase' -0 . Kami ingin membandingkan nilai saat ini dengan nilai 15 -lt "15" . Jadi untuk meringkasnya dalam bahasa Inggris,
JIKA nilai baterai KURANG DARI 15% KEMUDIAN memutar file audio
Saya menghargai saya telah sedikit membodohi dan mungkin penjelasan saya dapat ditingkatkan, tetapi mudah-mudahan itu akan membantu orang lain memahami cara menambahkan alarm untuk baterai dan menghindari laptop mereka dari hanya mematikan tiba-tiba!
Semoga berhasil!
Oke ... ternyata ketika laptop saya sedang diisi, output dari
acpi -b
adalah:
Battery 0: Charging, 35%, 01:04:08 until charged
sedangkan pada baterai
Battery 0: Discharging, 36%, 01:22:36 remaining
jadi menggunakan parameter yang disebutkan pada awalnya
print ( $(NF-2)-0)
output hasil yang berbeda, karena ingat, bit NF- nilai menentukan berapa banyak item mundur dari akhir output untuk ditampilkan, sehingga dengan output pada baterai
Battery 0: Discharging, 36%, 01:22:36 remaining
$(NF-2)
keluaran '36% 'sedangkan dengan laptop yang diisi,
Battery 0: Charging, 35%, 01:04:08 until charged
$(NF-2)
keluaran '00: 50: 12 ', yaitu jumlah waktu yang tersisa hingga terisi.
The -0
setelah $(NF-2)
minus nol dari nilai, jadi ketika nilai adalah persen -0
berubah dari sesuatu seperti '36%' untuk '36'. Ketika nilai output dianggap non numerik, seperti output waktu '01: 04: 08 'seperti di atas, nilai -0
pengembaliannya adalah' 0 '. Jadi, Anda dapat melihat masalah saya - saat laptop saya diisi daya, nilai output selalu '0'. Karena saya ingin memutar alarm ketika nilai output kurang dari 15, itu berarti alarm baterai berbunyi setiap satu menit saat diisi ulang!
Saya membaca sedikit lebih lanjut tentang output dari awk
perintah dan ternyata saya tidak perlu membuatnya membaca nilai kedua dari akhir, saya bisa mulai dari awal output dan melompat ke depan. Ini jauh lebih baik karena status baterai saya mulai sama apakah baterai sedang diisi atau pada baterai dalam hal jumlah parameter, yaitu parameter keempat dari awal selalu nilai pengisian dalam persen.
SO ... untuk membuatnya membaca nilai keempat, perintah berubah dari
awk ' { print ($(NF-2)-0)}'
untuk
awk ' { print ($4)-0}'
atau dalam kemuliaan penuh:
*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'` -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi
Sekali lagi saya berharap itu membantu seseorang! Semoga sukses dan terima kasih sudah membaca!
Oke, jadi sedikit tambahan mengaduk-aduk dan saya juga mencari cara mengatur volume ke 100% dan mengaktifkan suara sebelum memutar alarm - karena mari kita hadapi itu, apa gunanya alarm baterai jika Anda tidak dapat mendengarnya karena Anda Sudahkah mengatur volume ke rendah atau mematikannya ?!
Bagaimanapun, perintah yang Anda butuhkan adalah:
*/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
seperti yang Anda lihat, semua yang saya lakukan adalah memasukkan string perintah
pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&
( &&
Hanya mengikat beberapa perintah bersamaan)
Sekali lagi, semoga sukses semuanya!
Oke, Jadi ... satu edit terakhir (semoga!) ... ternyata, tanda persentase adalah tanda khusus ketika menjalankan tugas cron. Oleh karena itu, Anda harus 'lepas' tanda persentase dengan meletakkan backslash ( \
) di depan masing-masing %
sehingga tidak (salah) ditafsirkan oleh shell.
Jadi pada dasarnya ganti
100%
dengan
100\%
Oleh karena itu, perintah yang Anda BENAR-BENAR butuhkan adalah:
*/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
Fiuh berharap itu untuk Anda seperti halnya bagi saya !! (akhirnya!)
Anda dapat mengatur pekerjaan cron yang akan memeriksa status baterai setelah setiap 5/10 menit dan kemudian tergantung pada persentase baterai itu akan memainkan beberapa suara.
Untuk memutar suara bisa Anda gunakan
mpg123
filename.mp3
Untuk menginstalnya
sudo apt-get install mpg123
Untuk mendapatkan status baterai dari baris perintah, Anda dapat menggunakan perintah ini
upower -i /org/freedesktop/UPower/devices/battery_BAT0
menggunakan grep
Anda dapat mengekstrak info yang tepat sebagai berikut
upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"
Sekarang Anda dapat meletakkan semua hal ini dalam skrip shell (dan juga if
kondisi untuk memeriksa apakah status baterai lebih rendah dari 10%) dan hanya memberikan path skrip shell ini ke cron job.
jadi setelah setiap 5 menit (Anda dapat mengubah interval ini) status baterai Anda akan diperiksa dan jika baterai lebih rendah dari 10% file suara Anda yang disediakan akan diputar!
Semoga ini membantu!
Salah satu cara mudah untuk melakukan ini adalah menambahkan cek sederhana ke crontab Anda (cron adalah sistem untuk menjalankan berbagai hal secara teratur, yang ditetapkan pengguna di latar belakang.)
Pertama, Anda perlu menginstal mp3 player dan acpi baris perintah untuk dapat membaca status baterai.
Dari terminal, jalankan yang berikut untuk menginstal paket.
sudo apt-get install acpi mpg123
Selanjutnya, saat masih di terminal, ketik crontab -e
dan masukkan berikut ini ke akhir file. Ubah saja pengguna ke nama pengguna Anda dan .mp3 ke nama file Anda di direktori home Anda.
*5 * * * * if [ `acpi |awk '{print substr($NF, 0, length($NF)-1)}'` -lt "10" ] ; then mpg123 /home/user/SuperCoolSound.mp3 ;fi
Tekan Control-O (huruf) dan Enter untuk menyimpan. Tekan Control-x untuk keluar
Barang ekstra yang mungkin ingin Anda baca ...
acpi |awk '{print substr($NF, 0, length($NF)-1)}'
-lt "10"]; kemudian aplay /home/felipelalli/Music/siren.wav; fi [: ekspresi integer diharapkan: tersisa ➜ ~ acpi Baterai 0: Pengosongan, 9%, 00:17:56 tersisa
Sebenarnya saya menggunakan jawaban Andy Pyne tetapi tidak berhasil untuk saya. Cron mengeksekusi kode, tetapi tidak memutar suara. Akhirnya saya menemukan solusinya dan membagikannya di sini:
Langkah 1: Instal mpg3
sudo apt-get install acpi mpg123
Langkah 2:
Simpan perintah berikut di~/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
Skrip ini memutar battery_low.mp3 jika laptop sedang dipakai dan isi daya kurang dari atau sama dengan 15%. (Jika daya AC terhubung, itu tidak akan mengingatkan Anda). Kode ini juga memberi tahu Anda, jika biayanya 100%. Jika Anda tidak ingin lansiran untuk keadaan terisi penuh, hapus bagian lain dari kode ini.
Langkah 3: Buat file dapat dieksekusi menggunakan perintah berikut.
chmod +x ~/bin/battery_alert
Langkah 4: Jalankan file ini menggunakan cron dengan menambahkan perintah berikut ke akhir file opend by crontrab -e
command.
*/5 * * * * /home/user/bin/battery_alert
(Jangan lupa untuk memiliki baris kosong setelah perintah ini)