Aplicar filtros superiores en modo por lotes

Aplicar filtros superiores en modo por lotes

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 -popción de línea de comando se puede usar para restringir qué procesos topleen. 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. psgenera la lista de detalles del proceso, el awkcomando los filtra y sortsimplemente elimina los duplicados.

Para su uso, verifique qué columnas psva 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 awkcomando según sea necesario para que coincidan con el filtro que necesita. Observe que $6aparece 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.

información relacionada