Belki "izlemek" istediğiniz şey olmayabilir. Muhtemelen çözümünüzü değil, probleminizi çözme konusunda yardım istemek istiyorsunuz! :)
Gerçek hedefiniz, komuttan görülenlere göre eylemleri tetiklemeksetail
, bunu kuyruğun kendisinin bir parçası olarak yapabilirsiniz. "Periyodik olarak" çalışmak yerine, watch
kodunuzu istek üzerine çalıştırabilirsiniz .
#!/bin/sh
tail -F /var/log/somelogfile | while read line; do
if echo "$line" | grep -q '[Ss]ome.regex'; then
# do your stuff
fi
done
tail -F
Bir günlük dosyasını newsyslog veya logrotate tarafından döndürülse bile takip etmeye devam edeceğini unutmayın . Bunu küçük harf yerine kullanmak istiyorsunuz tail -f
. man tail
Ayrıntıları kontrol edin .
Bununla birlikte, gerçekten bir komutu periyodik olarak çalıştırmak istiyorsanız, sağlanan diğer cevaplar kısa bir kabuk komut dosyasına dönüştürülebilir:
#!/bin/sh
if [ -z "$2" ]; then
echo "Usage: $0 SECONDS COMMAND" >&2
exit 1
fi
SECONDS=$1
shift 1
while sleep $SECONDS; do
clear
$*
done