Cela peut facilement être fait en utilisant watch
aussi sans utiliser de scripts.
watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"
Afin de faire ce que vous cherchez, un simple script (comme l'a souligné @Ignacio) devrait faire l'affaire :
while true
do
echo "$(date '+TIME:%H:%M:%S') $(ps aux | grep "pattern" | wc -l)" | tee -a logfile
sleep 2
done
J'utilise tee
au lieu de >>
afin que vous puissiez voir la sortie sur votre terminal ainsi que la capturer dans votre journal.
watch
est destiné à être affiché sur un écran. Si vous voulez simplement exécuter une commande toutes les X secondes, vous devez simplement utiliser une boucle de retard pour cela.
while true ; do somecommand ; sleep 2 ; done