GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo encontrar el proceso con el máximo de descriptores de archivo?

¿Qué tiene de malo este for? ¿círculo? Estoy tratando de encontrar qué proceso tiene la cantidad máxima de descriptores de archivos. El primer comando en for bucle ps aux | awk '{print $2}' imprime solo los ID de proceso. Conozco el primer error lsof: illegal process ID: PID está allí porque la primera línea de la salida es PID , pero ¿no debería funcionar bien el ciclo para el resto de las líneas?

[[email protected] ~]# for i in `ps aux | awk '{print $2}'` ; do `lsof -p $i | wc -l` ; done
lsof: illegal process ID: PID
lsof 4.82
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Use the ``-h'' option to get more help information.
-bash: 0: command not found
-bash: 22: command not found
-bash: 4: command not found
-bash: 4: command not found
-bash: 4: command not found
-bash: 4: command not found
^C
[[email protected] ~]#

¿Por qué está ejecutando la salida de wc -l? en lugar de volver al bucle?

¿O hay otra manera de encontrar el proceso con el máximo de descriptores de archivo?

Respuesta aceptada:

El problema son los acentos graves en tu do ... done sección.

Al escribir un script de shell, no necesita encapsular bloques (if; then ... fi , while; do ... done , etc) en acentos graves. Hacerlo da como resultado que el shell evalúe el contenido de los acentos graves y luego ejecute ese contenido. Entonces, los acentos graves devuelven un número (el número de archivos abiertos) y luego intentan ejecutar ese número, lo que resulta en un command not found .

Así quieres:

for i in `ps aux | awk '{print $2}'` ; do lsof -p $i | wc -l ; done

Linux
  1. Cómo auditar permisos con el comando de búsqueda

  2. ¿Cómo agregar la salida a un archivo?

  3. ¿Cómo encuentro el tamaño máximo de pila?

  4. ¿Cómo encontrar el administrador de archivos predeterminado?

  5. Cómo combinar el comando 'tar' con 'buscar'

Cómo usar el comando md5sum en Linux

Cómo usar el comando táctil en Linux

Cómo usar el comando de cabeza de Linux

Cómo usar el comando diff de Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo encontrar archivos con docenas de criterios con el comando Bash Find