Das geht ganz einfach mit watch
auch ohne Verwendung von Skripten.
watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"
Um das zu tun, wonach Sie suchen, sollte ein einfaches Skript (wie @Ignacio betonte) ausreichen:
while true
do
echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile
sleep 2
done
Ich verwende tee
statt >>
damit Sie die Ausgabe auf Ihrem Terminal sehen und in Ihrem Protokoll erfassen können.
watch
ist für die Ausgabe auf einem Display gedacht. Wenn Sie einfach nur alle X Sekunden einen Befehl ausführen möchten, sollten Sie dafür einfach eine Verzögerungsschleife verwenden.
while true ; do somecommand ; sleep 2 ; done