Newsgroup: it.comp.os.linux.sys
Titolo: quale processo usa molto il disco?

Ciao, CDO potete consigliarmi qualche programma in grado di capire chi è che
sta scrivendo molto sull'hard disk?
grazie mille
-- 
e ziocan

 iostat
Uhm...
Come ottieni da iostat informazioni sui processi?
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
__________________________________
Combatti l'AIDS col tuo computer: 
http://fightaidsathome.scripps.edu/

 
sě, č da quel programma che ho capito che ci sono troppe scritture.
mi servirebbe capire chi č che ha cosě tanto da scrivere.
grazie
-- 
e ziocan

 
pidstat, fa sempre parte di sysstat, ma lo trovi solo nelle versioni >7.1.4

 mi servirebbe capire chi è che ha così tanto da scrivere.
A rischio di pigliare l'ennesima cantonata, io ammetto di non
conoscere un modo semplice per ottenere le informazioni che cerchi.
Forse usando lsof in qualche modo, prima per dare un'occhiata, e poi
a naso, per tentativi, mettendolo in grep con qualcosa...
Peccato, perché poi, conoscendo il pid dei processi, ne si può
regolare facilmente la priorità di accesso ai dischi col comando
ionice.


 lsof | awk '{print $1}' | sort | uniq -c | sort -nk1
Grazie!
la stringa che mi hai consigliato riporta:
    101 dsm_om_co
    105 yum-updat
    106 dsm_sa_da
    137 mysqld
    211 sshd
    567 lighttpd
   2394 httpd
quindi direi che il principale colpevole è httpd. ora cerco di capire quanti
log sta scrivendo e se si può diminuire un po'.
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache  si  so   bi   bo   in   cs us sy id wa st
 1  0    240 158188 677736 2332048  0   0    6   473   4    2  5  5 83  7  0
 1  0    240 157488 677736 2332072  0   0    1   482 3246 3727  9  7 84  1 0
 3  0    240 157620 677736 2332076  0   0    0   622 3241 3741  1  6 92  1 0
ciao
grazie ancora
-- 
e ziocan

 lsof | awk '{print $1}' | sort | uniq -c | sort -nk1
Tanto per affinare un po' la mira, ed evitare di contare connessioni
IP etc., non sarebbe meglio inserire qualcosa come:
lsof | grep REG | awk ...


    2394 httpd
Non per farmi gli affari tuoi, ma sulla stessa macchina hai Apache e
Lighttpd? Che senso ha?
Enrico

Enrico 'Henryx' Bianchi wrote:

apache serve due siti medio piccoli,
lighty è uno dei server statici di un grosso sito
ciao
-- 
e ziocan

 lighty è uno dei server statici di un grosso sito
ip diversi evidentemente
-- 
e ziocan

 awk, etc in your command line is fine, but don't use the perl libraries.)
m'č venuto il mal di testa :)

 lighty è uno dei server statici di un grosso sito
Ok, capito (mi verrebbe da chiederti perche` non hai usato due macchine
differenti, virtuali o meno, ma penso che tu abbia avuto dei buoni
motivi per procedere in questo senso)
Enrico

 motivi per procedere in questo senso)
semplicemente per via che ci sono due server per i files statici (e questo č
uno dei due) e avanzava un po' di cpu e spazio disco, quindi per un amico
ho installato apache e i suoi siti, aggiungendo solo un indirizzo ip alla
scheda di rete.
-- 
e ziocan

 Lighttpd? Che senso ha?
Che senso ha?!? È la cosa più utile del mondo! Apache serve i contenuti
dinamici e lighttpd quelli statici (immagini, js, css, html). Diciamo che è
una configurazione obbligata in infrastrutture web abbastanza carrozzate.
-- 
Vide

> lsof | awk '{print $1}' | sort | uniq -c | sort -nk1
Questa pippata ti da il numero di descrittori aperti per ogni
programma, ma non ti dice quali ti stanno imbambanando [1] il
disco.
Quello che serve all'op si puo' fare con auditd o stap. Usare
con cautela.
Fabio
[1] scusa se uso una terminologia da iniziati.

Remolo (was: Max_Adamo) wrote:

Passi il resto, ma il "
http://juno.blahblah.com
" uno come dovrebbe tirarlo
fuori? nmap? wget? E perche' allora non scoprire anche se esiste https://,
ftp://, etc.?

 script AWK se so che esiste un tool che si chiama numgrep?
In realta' il discorso imho e' piu' complesso, e quindi di volta in volta si
scelgono le soluzioni piu' appropriate per il tipo di problema, e "piu'
appropriato" puo' voler dire mille cose, da "scala meglio" a "si scrive in
poco tempo" a "si mantiene/personalizza meglio" a "gestisce bene i casi
particolari di input" a "e' portabile/standard/usa estensioni GNU" a "usa
il linguaggio/tool che conosco/che e' disponibile" a "non reinventare la
ruota" a "piace di piu' al capo" (ahime' si', anche questo). Secondo me (e
spero anche secondo un datore di lavoro) la bravura di un informatico si
misura anche da come gestisce i problemi bilanciando questi fattori,
scegliendo di volta in volta la soluzione "migliore" (nel senso di cui
sopra). E, per questo, *piu'* tool/linguaggi si conoscono (non *meno*),
meglio e', e se, per ogni problema, sei in grado di proporre piu'
soluzioni, sicuramente hai una marcia in piu' (sempre imho). Poi certo, ci
potra' essere chi si impigrisce e fa tutto con sed e grep, ma rimarra'
sempre un po' limitato rispetto a chi invece ha un repertorio di conoscenze
piu' ampio.
Rispondendo alla domanda, nella realta' (e in quel test) io avrei usato
numgrep (che peraltro non conoscevo, grazie). Anzi, se esistesse un'utility
che fa esattamente quello che chiedevano (e io la conoscessi) io avrei
fatto proprio uno script di una riga con quell'unico comando. Se
apprezzavano, bene, altrimenti sarei *io* che non avrei voluto lavorare con
loro. Poi, ovviamente, ognuno ha le sue opinioni :-)
Ciao

 Mi sa che devo cercare di usare AWK per fare il match dei numeri :(
Non basterebbe semplicemente egrep? Qualcosa come:
cat /etc/hosts | egrep -o \\b\([[:digit:]]\{1,3\}\\.\)\{3\}[[:digit:]]\{1,\3}\\b
In coda ci metti il controllo, che hai postato prima, sulla legalità
del presunto IP.


 Mi sa che devo cercare di usare AWK per fare il match dei numeri :(
Non basterebbe semplicemente egrep? Qualcosa come:
cat /etc/hosts | egrep -o
\\b\([[:digit:]]\{1,3\}\\.\)\{3\}[[:digit:]]\{1,3\}\\b




 Mi sa che devo cercare di usare AWK per fare il match dei numeri :(
Premesso che matchare gli indirizzi IP non e' banale (e sicuramente quei
simpaticoni che ti hanno proposto quel test lo sanno)...
2 cose:
- egrep -o (man grep), mi pare che qui possa fare al caso tuo
- questa e' la regexp (ERE) per un indirizzo IPv4 (ti risparmio quella per
un IPv6, che e' meglio :-)):
(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9
[0-9]|2[0-4][0-9]|25[0-5])
Sembra incasinata, ma in realta' e' semplice se la leggi a "pezzi" (ed e'
composta da due parti sostanzialmente uguali). La metti in una variabile e
non ci pensi piu'.
$ ip='(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|
[0-9][0-9]|2[0-4][0-9]|25[0-5])'
(in realta' non e' proprio perfetta, sarebbe meglio "ancorarla", ma e'
comunque un buon punto di partenza)
$ LC_ALL=C egrep -o "$ip" /etc/hosts
127.0.0.1
192.168.200.10
192.168.200.42
192.168.200.254
Poi ci sarebbero altri metodi, ma usano librerie (perl e altro) che mi pare
non fossero permesse.
Ciao!

 [0-9][0-9]|2[0-4][0-9]|25[0-5])'
Ho perso dei pezzi nel copia incolla:


 [0-9][0-9]|2[0-4][0-9]|25[0-5])'
Ah no, e' proprio che viene tagliato da qualche parte dopo che
invio...vediamo se cosi' e' meglio:
ip='(([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}
([1-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
(tutta su una riga)