Repetir comandos en Linux sin watch

En distribuciones linux es muy común disponer de una herramienta llamada watch que nos permite ejecutar comandos con una determinada periodicidad para ver por ejemplo el progreso de una copia de un archivo. Para quien no lo haya usado nunca, el comando watch se ejecuta por ejemplo de la siguiente manera:

watch -n X "comando complejo | otracosa mariposa"

Donde X es el numero de segundos que queremos entre cada ejecución del comando. Te recomiendo meter el comando entre comillas para asegurarnos de que se ejecuta completamente, incluidos pipes, redirecciones, etc.

Sin embargo, hay sistemas en los que el sistema operativo incluido no lleva de fábrica el comando watch. Este era el caso de mi NAS QNAP, en el que tras añadir un disco adicional, quería ir viendo como progresaba la expansión del RAID sin andar tecleando todo el rato cursor arriba, enter.

Como repetir comandos en Linux sin watch

Bien, esta solución es un poco más larga de teclear pero igualmente efectiva y sobre todo, no implica grandes consumos de recursos, ya que hace uso de un simple while y un sleep

while [ 1 ]; do cat /proc/mdstat; sleep 10; clear; done

Este simple oneliner nos mostrará el proceso de reconstrucción del RAID cada 10 segundos y luego limpiará la pantalla para que no se acumulen las salidas del mdstat. El resultado de ejecutarlo es un simple:

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] 
md1 : active raid6 sdd3[7] sdc3[0] sde3[6] sdf3[5] sdg3[4] sdh3[3] sda3[2] sdb3[1]
19485318080 blocks super 1.0 level 6, 64k chunk, algorithm 2 [8/8] [UUUUUUUU]
[>....................] reshape = 1.6% (64912836/3897063616) finish=1549.0min speed=41230K/sec

md256 : active raid1 sdd2[8](S) sde2[7] sdf2[6](S) sdg2[5](S) sdh2[4](S) sda2[3](S) sdb2[2](S) sdc2[1]
530112 blocks super 1.0 [2/2] [UU]
bitmap: 0/1 pages [0KB], 65536KB chunk

md13 : active raid1 sdd4[24] sde4[7] sdf4[6] sdg4[5] sdh4[4] sda4[3] sdb4[2] sdc4[1]
458880 blocks super 1.0 [24/8] [UUUUUUUU________________]
bitmap: 1/1 pages [4KB], 65536KB chunk

md9 : active raid1 sdd1[24] sde1[7] sdf1[6] sdg1[5] sdh1[4] sda1[3] sdb1[2] sdc1[1]
530048 blocks super 1.0 [24/8] [UUUUUUUU________________]
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Espero que te haya ayudado!