GNU/Linux >> Linux Esercitazione >  >> Linux

Controlla il limite FD aperto per un determinato processo in Linux

Puoi provare a scrivere uno script che chiami periodicamente lsof -p {PID} su un dato pid.


per vedere i primi 20 handle di file utilizzando i processi:

for x in `ps -eF| awk '{ print $2 }'`;do echo `ls /proc/$x/fd 2> /dev/null | wc -l` $x `cat /proc/$x/cmdline 2> /dev/null`;done | sort -n -r | head -n 20

l'output è nel formato file handle count, pid, cmndline for process

output di esempio

701 1216 /sbin/rsyslogd-n-c5
169 11835 postgres: spaceuser spaceschema [local] idle
164 13621 postgres: spaceuser spaceschema [local] idle
161 13622 postgres: spaceuser spaceschema [local] idle
161 13618 postgres: spaceuser spaceschema [local] idle

Conta le voci in /proc/<pid>/fd/ . I limiti rigidi e flessibili applicabili al processo possono essere trovati in /proc/<pid>/limits .


Le uniche interfacce fornite dal kernel Linux per ottenere i limiti delle risorse sono getrlimit() e /proc/ pid /limits . getrlimit() può ottenere solo i limiti delle risorse del processo chiamante. /proc/ pid /limits ti consente di ottenere i limiti delle risorse di qualsiasi processo con lo stesso ID utente ed è disponibile su RHEL 5.2, RHEL 4.7, Ubuntu 9.04 e qualsiasi distribuzione con un kernel 2.6.24 o successivo.

Se hai bisogno di supportare sistemi Linux più vecchi allora dovrai fare in modo che il processo stesso chiami getrlimit() . Ovviamente il modo più semplice per farlo è modificare il programma o una libreria che utilizza. Se stai eseguendo il programma, puoi usare LD_PRELOAD per caricare il tuo codice nel programma. Se nessuno di questi è possibile, puoi collegarti al processo con gdb e fare in modo che esegua la chiamata all'interno del processo. Puoi anche fare la stessa cosa tu stesso usando ptrace() da allegare al processo, inserire la chiamata nella sua memoria, ecc., tuttavia è molto complicato da ottenere correttamente e non è consigliato.

Con i privilegi appropriati, gli altri modi per farlo implicherebbero la ricerca nella memoria del kernel, il caricamento di un modulo del kernel o la modifica in altro modo del kernel, ma presumo che questi siano fuori discussione.


Linux
  1. Come calcolare l'utilizzo della CPU di un processo tramite PID in Linux da C?

  2. Libreria Python per la gestione dei processi Linux

  3. Come impostare l'ID processo in Linux per un programma specifico

  4. Linux Script per verificare se il processo è in esecuzione e agire sul risultato

  5. Linux:visualizza l'utilizzo della CPU da parte di un processo per l'ultimo secondo

Come controllare tutte le porte aperte nel tuo sistema Linux

Come trovare il PID e il PPID di un processo in Linux

Tutti i modi per verificare se una porta è aperta in Linux

I 10 migliori gestori di appunti open source per Linux

I 10 strumenti di navigazione dei file open source per il sistema Linux

I 10 migliori renderer open source per il sistema Linux