Bunun işletim sistemi tabanlı olmasını istiyorum, bu yüzden bir internet bağlantısına veya açık bir tarayıcıya vb. İhtiyacım yok. Sadece arka planda olabilecek bir şey var
Bunu yapmanın en kolay yolu bir uygulama ile olabilir, ancak bunu yalnızca yerleşik OS komutlarıyla nasıl yapacağınız aşağıda açıklanmıştır. Olay odaklı olmasını istediğinizi biliyorum, ancak bunu nasıl yapacağınızdan emin değilim, bu yüzden pil seviyesini kontrol etmenin, ardından bir eşiğin üstünde / altındaysa başka bir şey yapmanın bir yolu.
Bir işlemi düşünebilirsiniz launchd
, bu temelde her x
dakika çalışan zamanlanmış bir görevdir . Genellikle ileri düzey kullanıcılar tarafından kullanılır, ancak kurulumu çok zor değildir. Bu dizine koyduğunuz bir .plist dosyasıyla bir launchd zamanlanmış görevi yapılandırırsınız: Macintosh HD\Library\LaunchDaemons
.plist dosyasını şu şekilde yapılandırırsınız;
<?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>
Siz bu dosyayı kaydetmek için olsaydı com.me.BatteryInfo
içinde LaunchDaemons
yukarıda belirtilen klasöre, her 30 dakikada bir çalışır zamanlanmış görev yaratacak. 1800
Doğrudan yukarıdaki sayı, </dict>
görevin ne sıklıkta çalışmasını istediğinizin saniye cinsinden süresidir. Nerede <string>/Users/yourusername/batt.sh</string>
komut dosyası, programda hangi komut dosyasının çalışacağını belirttiğiniz yerdir. Ayrılmalı <string>
ve </sting>
sağlam olmalısın .
Çizgi <string>com.me.BatteryInfo</string>
, zamanlanan görevin benzersiz adıdır. Birden fazla yapacaksanız, her bir .plist'in burada benzersiz bir ada sahip olduğundan emin olun.
Yapmanız gereken bir sonraki şey .plist'in sahipliğini olarak değiştirmek root
. Bu bir güvenlik özelliği olarak gereklidir (yazılımın / kullanıcıların zamanlanmış kötü amaçlı görevler oluşturmasını durdurmak için). Dosyanın sahipliğini değiştirmek için şunu yapın sudo chown root \Library\LaunchDaemons\yourtask.plist
(göreviniz.plist dosyasını oluşturduğunuz .plist'in gerçek dosya adıyla değiştirin). Bu görev sizden şifre isteyecektir.
Şimdi periyodik olarak çalışacak bir komut dosyası oluşturmanız gerekir. Bilgisayara ne yapacağını söylemek için bir .sh dosyası (bash betiği) oluşturmanız gerekir. Bir .sh dosyası oluşturmak için Sublime Text veya Komodo Edit gibi bir programcı metin düzenleyicisi açın . Metin Düzenleme'yi KULLANMAYIN, çünkü dosyalarınıza genellikle komut dosyasına müdahale eden metinler ekler. Metin Düzenleme gerçekten kod için kullanılmamalıdır.
Aşağıdaki kodla bir komut dosyası (.sh dosyası) oluşturun;
#!/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
echo 'charged.'
Pil şarj edildiğinde çalıştırmak istediğiniz terminal komutlarıyla değiştirin . open /Applications/Notes.app
Notes uygulamasını açacak; farklı bir uygulama açmak için dizini değiştirebilirsiniz.
$percent > 95
Bu, bir sonraki satıra yalnızca pil 95
şarj edilenden fazla olduğunda çalışmasını söyler . Bunu istediğiniz gibi değiştirebilirsiniz. Buradaki pil seviyesi genellikle üstteki menü çubuğunda görüntülenenden biraz farklı olacaktır. 'Pil tamamen şarj olduğunda çalıştırmak' istiyorsanız bunu> 95 olarak bırakmanızı tavsiye ederim . Örneğin, piliniz% 20'nin altına düştüğünde görevin çalışmasını istiyorsanız,$percent < 20
NOT: Bu zamanlanmış bir görev olduğundan, komut dosyanız her x
dakika dakikasında çalışır. Bu open \Applications\Notes.app
, komut dosyanızın içine koyarsanız , Notes uygulaması her x
dakika başlayacaktır (piliniz şarj edilmişse)
Hiç kimse oturum açmamış olsa bile bu görev çalışır.
Bu soruyu bir süre önce sorduğunu biliyorum, ama umarım bu birisine yardım eder.