GNU/Linux >> Znalost Linux >  >> Linux

Jak najít proces s maximálním počtem deskriptorů souborů?

Co je špatného na tomto for smyčka? Snažím se zjistit, který proces má maximální počet deskriptorů souborů. První příkaz v for smyčka ps aux | awk '{print $2}' vytiskne pouze ID procesů. Znám první chybu lsof: illegal process ID: PID je tam, protože 1. řádek výstupu je PID , ale neměla by smyčka fungovat dobře pro zbytek řádků?

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

Proč provádí výstup wc -l místo návratu do smyčky?

Nebo existuje jiný způsob, jak mohu najít proces s maximálním počtem deskriptorů souborů?

Přijatá odpověď:

Problémem je zpětné zaškrtnutí ve vašem do ... done sekce.

Při psaní skriptu shellu nemusíte bloky zapouzdřovat (if; then ... fi , while; do ... done atd.) Pokud tak učiníte, shell vyhodnotí obsah backticks a poté tento obsah spustí. Takže backticks vrací číslo (počet otevřených souborů) a poté se pokoušejí toto číslo spustit, což má za následek command not found .

Takže chcete:

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

Linux
  1. Jak připojit výstup do souboru?

  2. příkaz tr - jak nahradit řetězec \n skutečným novým řádkem (\n)

  3. Jak najít soubor s name=php.ini na linuxu pomocí příkazu grep

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak zjistím maximální velikost zásobníku?

  3. Jak najít výchozího správce souborů?

  1. Jak auditovat oprávnění pomocí příkazu find

  2. Jak zkombinovat příkaz „tar“ s příkazem „najít“

  3. Jak najít soubor .pid pro daný proces