
Puedo aplicar el modo interactivo de mis filtros deseados (presionando o). ¿Hay alguna manera de obtenerlos en modo por lotes?
Estoy usando procps-ng versión 3.3.10. Gracias.
Respuesta1
De acuerdo ala página de manual, la -p
opción de línea de comando se puede usar para restringir qué procesos top
leen. No parece permitir el filtrado exactamente como en el modo interactivo, pero puede lograr esencialmente el mismo resultado examinando la salida de ps
.
Ejemplo, tomando sólo procesos con más de tres subprocesos:
$ ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print $2; } }' | sort -u
En mi computadora, esto imprime una lista de todos los procesos relevantes, uno en cada línea. ps
genera la lista de detalles del proceso, el awk
comando los filtra y sort
simplemente elimina los duplicados.
Para su uso, verifique qué columnas ps
va a necesitar. En mi computadora, el número de subprocesos ("NLWP") es la sexta columna ( $6
) y la identificación del proceso ("PID") es la segunda columna ( $2
). Ajústelos en el awk
comando según sea necesario para que coincidan con el filtro que necesita. Observe que $6
aparece dos veces: la primera para asegurarse de que sea un número y no el encabezado, y la segunda vez para asegurarse de que sea más de 3.
Después de ejecutar este comando, se deben proporcionar los identificadores del proceso top
. Bash y probablemente otros shells permiten pasar la salida de un programa como argumentos a otro programa, por lo que el comando final podría ser
$ top $(ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print "-p"$2; } }' | sort -u) ... And other options
"-p"
se agregó para que la salida funcione con top
. Ajuste este comando para que se ajuste a su filtro y shell según sea necesario, colóquelo en su lote y debería funcionar.
Nota: Para agregar más filtros probablemente sea necesario aprender awk. No es demasiado difícil.