Giriş
watch belirtilen string'i her 2 saniyede bir çalıştırır. Söz dizimi şöyle. Command tırnak içinde olmalı
Eğer uzun bir komut kullanmak istersek komutumuzu bir betik içine yazarı. Şöyle yaparız
Şöyle yaparız.
Şöyle yaparız
-n seçeneği
Çalıştırma sıklığını saniye cinsinden belirtir.
Örnek
Her 100 milisaniyede bir çalıştırmak için şöyle yaparız.
watch komutu yerine kendi döngümüzü yazarsak şöyle yaparız.
watch belirtilen string'i her 2 saniyede bir çalıştırır. Söz dizimi şöyle. Command tırnak içinde olmalı
watch [options] 'command'
watch string'i çalıştırmak için /bin/sh kabuğunu kullanır. Açıklaması şöyle
The watch command invokes commands via a non-interactive /bin/sh shell.
Dolayısıyla watch ve alias birlikte iyi çalışmıyorlar. Bir çözüm burada
Örnek
Görmek için şöyle yaparız
alias gpu='sensors nouveau-pci-0100'alias cpu='sensors coretemp-isa-0000've şöyle yapalımwatch gpuÇıktı olarak şunu alırızsh: 1: gpu: not found
watch ve Çalıştırılan Komutun Çıktısını Formatlama
Bazen bir komutun direkt çıktısı ile watch ile çağrılınca verdiği çıktı farklı olabiliyor.
Örnek
ls komutunun çıktısı şöyle. Yani satır satır
$ls /dev/tty*/dev/tty /dev/tty12 /dev/tty17 ../dev/tty0 /dev/tty13 /dev/tty18 .../dev/tty1 /dev/tty14 /dev/tty19 .../dev/tty10 /dev/tty15 /dev/tty2 .../dev/tty11 /dev/tty16 /dev/tty20 ...
watch ile çalıştırırsak şöyle olur
$ watch -d -n1 'ls /dev/tty*'Every 1.0s: ls /dev/tty*/dev/tty/dev/tty0/dev/tty1/dev/tty10/dev/tty11/dev/tty12/dev/tty13/dev/tty14/dev/tty15/dev/tty16/dev/tty17/dev/tty18/dev/tty19/dev/tty2/dev/tty20/dev/tty21...
Bu durumda komutu değiştirmek gerekir. Şöyle yaparız
$ watch -d -n1 'ls -C /dev/tty*'
watch Komutu sh Kabuğunu kullanır
Açıklaması şöyle. Burada tek tırnak kullanılmasının sebebi tek tırnağın raw string gibi çalışması.Since watch [options] 'command' executes command using sh -c by default, you can use it run snippets of shell code directly provided that:Örnek
1. you get the quoting right and
2. your code is sh-compatible i.e. doesn't use any bash/zsh/csh-"isms"
Eğer uzun bir komut kullanmak istersek komutumuzu bir betik içine yazarı. Şöyle yaparız
#!/bin/bash
if whois abcxyz.com | grep -q 'string'; then
echo 'Message line 1'
else
echo 'Message line 2'
fi
Çağırmak için şöyle yaparızwatch -n 3600 $HOME/bin/foo
Veya tırnak içinde kullanırız. Şöyle yaparız$ watch -n 36 'if whois abcxyz.com | grep -q "string"; then
echo "Message line 1" | ts
echo "Message line 2" | ts
fi'
ÖrnekŞöyle yaparız.
watch top -b
ÖrnekŞöyle yaparız
watch head -n 17 *
-differences seçeneği
Örnek
Şöyle yaparız
# You can also watch the data changing. Try… watch –interval=1 –differences 'mysql -uuser -ppassword -e "show slave status\G"'
-g/-chgexit seçeneği
Açıklaması şöyle
Exit when the output of command changes.
Örnek
Komutun çıktısı değişince watch'u durdurmak için şöyle yaparız
watch -g -n 5 'date +%H:%M'
Çalıştırma sıklığını saniye cinsinden belirtir.
Örnek
Her 100 milisaniyede bir çalıştırmak için şöyle yaparız.
watch -n 0.1 'cat /proc/cpuinfo | grep MHz'
Diğerwatch komutu yerine kendi döngümüzü yazarsak şöyle yaparız.
while sleep X; do
clear;
command1;
command2;
done
-t, -no-title seçeneği
Çıktıdaki başlık kısmını göstermez
Örnek
Şöyle yaparız
watch -ctn 1 bash time.sh
Hiç yorum yok:
Yorum Gönder