Soy un novato en Linux y estoy tratando de ver un comando e intentar iniciar sesión en un archivo. Lo intenté
watch -t -n 10 "(fecha '+ HORA:% H:% M:% S'; ps aux | grep" patrón "| wc -l)" >> archivo de registro
y espero un resultado como
TIME: 10:32:30 12
TIME: 10:32:40 18
TIME: 10:32:50 2
para ser almacenado en el archivo de registro. Sin embargo, cuando el archivo de registro tiene caracteres no imprimibles. ¿Cómo obtengo este tipo de salida del comando li?
ps
. Modificaré mi respuestaEsto 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"
fuente
tee -a logfile
dentro del argumento pasado awatch
. Muy limpio, gracias.watch
está destinado a la salida a una pantalla. Si simplemente quieres ejecutar un comando cada X segundos, entonces solo debes usar un ciclo de retraso para eso.fuente
watch es un programa ncurses, y está diseñado para ejecutarse en una ventana de consola (no redirigida), por lo que está creando un montón de caracteres no imprimibles (esos son los caracteres de control que administran y mueven el cursor para volver a dibujar la pantalla).
Puede intentar mover los comandos date / grep a un script y luego llamar a ese script desde un cronjob.
fuente
Ok, entonces lo puse en un script y tengo el siguiente código:
fuente
Me encontré con esta pregunta cuando estaba tratando de obtener una salida mejor / registrada de
du -sh $data_path
. Usé el patrón "mientras que el comando, duerme" que se encuentra aquí, pero usé algunos AWK complejos para dar el resultado que quería.De hecho, hice esto como una línea, por eso hay punto y coma. Pero para hacerlo legible, lo saqué. El resultado se ve así:
fuente
Aquí hay un ejemplo que solo necesitaba para un
watch
en unps axf
con una marca de tiempo en la parte inferior de toda la salida. Estoy pendiente de cuando Apache falla. Tuve que canalizartee
para cada comando, elps
y eldate
.watch 'ps axf | grep --line-buffered "[a]pache2"| tee --append logfile-apache-issue.log; date '+TIME:%H:%M:%S' | tee --append logfile-apache-issue.log'
Salida de muestra de
tail --follow logfile-apache-issue.log
en el archivo resultante.fuente