GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare il processo con il numero massimo di descrittori di file?

Cosa c'è di sbagliato in questo for ciclo continuo? Sto cercando di trovare quale processo ha il numero massimo di descrittori di file. Il primo comando nel for loop ps aux | awk '{print $2}' stampa solo gli ID di processo. Conosco il primo errore lsof: illegal process ID: PID è presente perché la prima riga dell'output è PID , ma il ciclo non dovrebbe funzionare correttamente per il resto delle righe?

[[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] ~]#

Perché sta eseguendo l'output di wc -l invece di tornare al ciclo?

O c'è un altro modo per trovare il processo con il massimo dei descrittori di file?

Risposta accettata:

Il problema sono i backtick nel tuo do ... done sezione.

Quando si scrive uno script di shell, non è necessario incapsulare i blocchi (if; then ... fi , while; do ... done , ecc) nei backtick. In questo modo la shell valuta il contenuto dei backtick e quindi esegue quel contenuto. Quindi i backtick restituiscono un numero (il numero di file aperti) e quindi tentano di eseguire quel numero, risultando in un command not found .

Quindi vuoi:

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

Linux
  1. Come trovo la dimensione massima dello stack?

  2. Come trovare il file con name=php.ini su Linux usando il comando grep

  3. Come trovare il file manager predefinito?

  4. Come combinare il comando 'tar' con 'find'

  5. Come trovare il file .pid per un determinato processo

Come utilizzare il comando md5sum in Linux

Come utilizzare il comando touch in Linux

Come utilizzare il comando head di Linux

Come usare il comando diff di Linux

Come trovare file con il comando fd in Linux

Come trovare file con dozzine di criteri con il comando Trova Bash