Domanda Processi ed identificazione degli ultimi

Stato
Discussione chiusa ad ulteriori risposte.

vgg5465

Utente Electrum
25 Novembre 2011
369
28
55
155
Ciao a tutti,

Sto iniziando a poco a poco la programmazione in python.
Mi sono imbattuto in un problemino, vorrei poter killare dei processi da un programmino in python. Fin qui ok !

Il problema è: se ci sono 2 processi uguali (2 processi java) per poterne killare solo 1 come faccio ??
C'è un modo per identificare un processo avviato (sempre dal programma precedentemente citato) magari associandolo ad una variabile ed in seguito killare il processo ??

Grazie dell'aiuto.
 
Ultima modifica:
<syscall>Ciao,
provo a dirti la mia visto che non ti ha risposto nessuno.

Potresti usare il modulo subprocess, dai un'occhiata qui http://robyp.x10host.com/subprocess.html

Quello che in bash mi viene in mente per l'identificazione (ed evitare quindi con kill pidof di killare tutti i processi uguali (in quanto pidof restituisce il pid a partire dal nome)) e' questo:
Codice:
kill `ps ux | grep '[n]ome_processo' | awk '{print $2}'`
greppi nome_processo (usi il carattere jolly [] per evitare di greppare anche il grep stesso, scusa il gioco di parole), leggi il pid relativo (colonna 2 su ps) usando awk e, attraverso la sostituzione di comando, apice inverso " ` " oppure $(), assegni il risultato ad un altro comando, in questo caso kill

Questo al fine di evitare di memorizzare il pid in una variabile per poi eseguire kill $variabile

Ti ho fatto l'esempio in bash poiche il modulo subprocess ti permette di eseguire comandi esterni usando call()
Magari ci sara' un modo piu' semplice, con python in genere ti puoi semplificare la vita, pero' non saprei consigliarti dell'altro : >

Se non riesci a risolvere in altro modo quindi prova a dare un'occhiata, se puo' esserti utile dai una letturina anche a questa discussione [Risolto]Eseguire comandi da script phython - leggi anche qui https://docs.python.org/3/library/subprocess.html

Nota se lanci i processi in backgrond (&): Se il processo da killare e' l'ultimo lanciato potresti usare anche la variabile speciale $! per identificarlo. Se conosci invece l'identificativo del processo in background (lo trovi con jobs) potresti usare kill %id_processo

o/</syscall>
 
  • Mi piace
Reazioni: TheSeeker
Intanto grazie della risposta :).

Avevo risolto l'identificazione del processo in questo modo:
A = subprocess.popen("./start.sh",shell = true)

Il problema adesso è killare il processo A.

Guardando su stackflow ho trovato diversi risultati che devo ancora testare.


Inviato dal mio iPhone utilizzando Tapatalk
 
<syscall>Esatto, dovresti riuscire a ricavare il pid del processo A greppando ps e usando awk per identificare la colonna e poi killare quello, okay comunque ci aggiorniamo...</syscall>
 
Stato
Discussione chiusa ad ulteriori risposte.