GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menemukan Proses Dengan Deskriptor File Maksimum?

Apa yang salah dengan for ini? lingkaran? Saya mencoba menemukan proses mana yang memiliki jumlah deskriptor file maksimum. Perintah pertama di for loop ps aux | awk '{print $2}' hanya mencetak ID proses. Saya tahu kesalahan pertama lsof: illegal process ID: PID apakah ada karena baris pertama dari output adalah PID , tetapi bukankah perulangan akan berfungsi dengan baik untuk sisa baris lainnya?

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

Mengapa menjalankan output wc -l bukannya kembali ke loop?

Atau adakah cara lain agar saya dapat menemukan proses dengan deskriptor file maksimum?

Jawaban yang Diterima:

Masalahnya adalah backtick di do ... done your Anda bagian.

Saat menulis skrip shell, Anda tidak perlu mengenkapsulasi blok (if; then ... fi , while; do ... done , dll) di backticks. Melakukannya menghasilkan shell mengevaluasi konten backticks, dan kemudian mengeksekusi konten itu. Jadi backticks mengembalikan nomor (jumlah file yang terbuka), dan kemudian mencoba menjalankan nomor itu, menghasilkan command not found .

Jadi Anda ingin:

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

Linux
  1. tr perintah - cara mengganti string \n dengan baris baru yang sebenarnya (\n)

  2. Bagaimana menemukan pengelola file default?

  3. Cara menggabungkan perintah 'tar' dengan 'find'

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Bagaimana menemukan file duplikat di Linux? Bantuan ada di sini dengan perintah fdupes!

  3. Bagaimana cara menambahkan output ke file?

  1. Bagaimana cara menemukan ukuran tumpukan maksimum?

  2. Cara mencari file dengan name=php.ini di linux menggunakan perintah grep

  3. Cara menemukan file .pid untuk proses tertentu