Sapete dirmi che parametro devo usare con ps per capire il padre di un processo?
Sapete dirmi che parametro devo usare con ps per capire il padre di un processo?
pstree
I've got a bike. You can ride it if you like.
si ok, però devo usare ps per uno script in bash
ps -ef. ti mete il PID e il PPID (processo padre) del processo.
ma poi come faccio a estrapolare il ppid?scusa la domanda stupida ma so veramente poco di linux...
prova con questo :
ps -ef|grep 'processo che ti interessa'|grep -v grep|awk '{print $3}'
ps : per i processi attivi
grep : (in questo caso) per selezionare il processo che ti interessa
awk : (per tantissime cose) ma per qui solo per il PPID
...tutto è semplice.... se l'ha già fatto qualcun altro prima, quindi sforzati ad imparare almeno!
vediamo se ho capito...
ps -ef mi cerca i processi
grep $1 cerca quello che voglio io
grep -v grep elimina la riga della ricerca del grep
awk'{print $3}' mi ritorna il valore di quella colonna
una cosa non capisco...come mai mi ritornano più valori?non dovrei averne solo uno??
inoltre, se volessi trovare a ritroso tutti i processi padre fino a init, come posso fare???Praticamente vorrei creare un albero dei processi a partire da quello scelto da me(e senza usare pstree...)
il mio pensiero semplicistico...(necessita di aggiustamenti che non riesco a pensare da solo in questo momento..)
while [pid!=1]
do
pid= pid del mio processo
echo $pid
pid= padre di pid
done
una cosa non capisco...come mai mi ritornano più valori?non dovrei averne solo uno??
sono i valori del padre e del figlio e dello spirito santo....
sostituisci in awk $3 con $2 ' ' $3
ma perchè ti ostini a non voler usare un comodo comando come pstree?
dunque :
ps -ef|grep 'processo che ti interessa'|grep -v grep|awk '{print $3}' |pstree dovrebbe funzionare
altrimenti metti tutto dentro in un ciclo e con un piccolo sforzo arrivi alla tua soluzione.
...tutto è semplice.... se l'ha già fatto qualcun altro prima, quindi sforzati ad imparare almeno!
scusa se rompo ma non mi va di lasciare le cose a metà...
ho trovato questo script che dovrebbe tornarmi il pid del mio processo
A=`ps ax | grep -e $1 | grep -v grep` ;
if [ "$A" == "" ]
then
echo "no such a process" ;
exit 1 ;
fi
K=1
for ITEM in $A ;
do
if [ $K = 1 ]
then echo $ITEM ;
fi
K=`expr $K + 1` ;
done
exit 0
non capisco perchè lo fa così complicato..
però trovo un solo pid.
Con il tuo metodo non riesco a capire perchè ne trovo di più?non dovrei averne solo 1??
Poi un'altra cosa..
siccome voglio formattare a mio piacimento l'albero che risulterà alla fine, mi sembra comodo usare un ciclo while.
come faccio però a trovare il pid padre dal pid figlio?
mi basta una cosa del genere??
`ps -ef | grep pid_figlio | grep -v grep | awk '{print $2}'`
o è meglio usare quella che mi hai dato tu
`ps -ef | grep $1 | grep -v grep | awk '{print $3}'`
te lo chiedo sempre e solo perchè non ho capito se mi ritorna uno o più risultati...
per intenderci comunque, io vorrei alla fine una cosa del genere:
mio_comando -> suo_padre -> padre_del_padre -> ... -> init
superpaul82 ti saluta d'angelo