Esto se puede hacer fácilmente usando watch
también sin usar ningún script.
watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"
Para hacer lo que está buscando, un script simple (como señaló @Ignacio) debería ser el truco:
while true
do
echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile
sleep 2
done
Yo uso tee
en lugar de >>
para que pueda ver el resultado en su terminal y capturarlo en su registro.
watch
está destinado a la salida a una pantalla. Si simplemente desea ejecutar un comando cada X segundos, debe usar un ciclo de retardo para eso.
while true ; do somecommand ; sleep 2 ; done