Çalışma süresi bir eylemi tetiklemek için nasıl kullanılabilir?


3

Ben x gün sonra bana bildirim verecek kabuk veya perl kodu yazmak istiyorum. Temel olarak SUSE Linux sunucusunda, 208 gün sonra yeniden başlatma gerekir, aksi takdirde sistem donar. Bu bilinen bir hatadır. Bundan kaçınmak için, 8 günden önce bana bildirim postasının gelmesini istiyorum.

Betik mevcut çalışma süresini kontrol etmeli ve ardından toplam 208 gün için gereken kalan günleri hesaplamalıdır. Umarım bu mantıklı.


1
Elbette yapılacak en doğru şey, buna en çok neden olan hatayı düzeltmek olacaktır.
Grawity

Yanıtlar:


7

Çalışma süresini awk ile gün cinsinden kolayca belirleyebilirsiniz:

# Print days of uptime, or zero if less than 1 day.
uptime | awk '/days?/ {print $3; next}; {print 0}'

Bunu, sonuçlara dayanarak istediğiniz herhangi bir işlemi gerçekleştirmek için komut değiştirme ile kullanabilirsiniz. Örneğin:

#!/bin/bash
days () { uptime | awk '/days?/ {print $3; next}; {print 0}'; }
UPTIME_THRESHOLD=200
if [ $(days) -ge $UPTIME_THRESHOLD ]; then
    : # Take some action.
fi

Açıkçası, yaptığınız eylem size kalmış. Kendinize mesaj yollayabilir, at komutuyla bir yeniden başlatma programlayabilirsiniz veya yapılması gereken herhangi bir şeyi yapabilirsiniz.

Ayrıca, bu betiği günlük cron işi olarak ayarlamak isteyebilirsiniz, böylece çalışma süresi eşiği aşıldığında tanımlanmış eyleminizi tetikler. Kök erişiminiz varsa, betiği kolayca bırakabilir /etc/cron.daily/veya günde bir kez bu betiği çağırmak için kişisel crontab'ınızı ayarlayabilirsiniz.


1
Linux'ta okunması daha hızlı /proc/uptime(ilk sayı saniye cinsinden çalışma süresidir).
Grawity

1

CodeGnome'un yanıtından esinlenerek mac için küçük bir komut dosyası hazırladı, burada bilgisayar 8: 30'da açıklandıktan sonra bir bildirim geldi. Ayrıca her dakika bunu çalıştırmak için cron'u yapılandırmak zorunda kaldım.

#!/bin/bash
timeup () { uptime | awk  '{print $3}'; }
UPTIME="8:30,"
if [ $(timeup) == $UPTIME ]; then
    osascript -e 'tell app "Finder" to display dialog "8:30 uptime! Go Home!"' &
    osascript -e 'display notification "8:30 uptime! Go Home!" with title "Go Home!!"' &
fi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.