Voglio essere in grado di avviare un processo e quindi essere in grado di ucciderlo in seguitoc'è un modo per avviare/fermare i processi di linux con python?
risposta
Dai un'occhiata al modulo subprocess
. È inoltre possibile utilizzare primitive di basso livello come fork()
tramite il modulo os
.
Un semplice funzione che utilizza modulo sottoprocesso:
def CMD(cmd) :
p = subprocess.Popen(cmd, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=False)
return (p.stdin, p.stdout, p.stderr)
vedi documenti per forcella primitivo() e moduli subprocess, multiprocessing, multithreading
Se necessario interagire con il sub processo a tutti, raccomando il modulo pexpect (link text). È possibile inviare in input il processo, ricevere (o "prevedere") l'output in risposta e chiudere il processo (con force = True per inviare SIGKILL).
Ecco un piccolo script python che avvia un processo, controlla se è in esecuzione, attende un po ', lo uccide, attende che termini, quindi controlla di nuovo. Usa il comando "uccidi". La versione 2.6 del subprocesso python ha una funzione kill. Questo è stato scritto il 2.5.
import subprocess
import time
proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()
L'uscita temporizzata mostra che è stata interrotta dopo circa 3 secondi, e non 60 come chiamata ad suggerisce sonno.
$ time python prockill.py
poll = None ("None" means process not terminated yet)
poll = -9
real 0m3.082s
user 0m0.055s
sys 0m0.029s
- 1. Libreria Python per gestione processi Linux
- 2. API Linux per elencare i processi in esecuzione?
- 3. Alto iowait con i processi java su linux
- 4. Unire un gruppo di processi python con un timeout
- 5. Modo consigliato per gestire i processi di script PHP persistenti?
- 6. C'è un modo leggero per ottenere il numero corrente di processi in Linux?
- 7. python Pool con worker Processi
- 8. Multiprocessing di Python per processi paralleli
- 9. Python che condivide un blocco tra i processi
- 10. Numero massimo di processi in linux
- 11. Come bloccare un file con i processi esterni
- 12. Distinzione tra processi e thread in Linux
- 13. Registrazione di Python da più processi
- 14. Discussioni/Confronto dei processi su Linux/Windows
- 15. Come calcolare l'utilizzo della CPU di un processo e tutti i suoi processi figli in Linux?
- 16. in che modo un file di libreria condivisa chiamato da due diversi processi in Linux?
- 17. C'è un modo per condividere un blocco (ad esempio un file di blocco) tra processi R?
- 18. Come arrestare correttamente i processi di lavoro Python RQ in modo dinamico?
- 19. C'è un modo per decompilare Linux .so?
- 20. Elaborazione di un singolo file da più processi in python
- 21. Il modo migliore per creare processi figlio in linux e gestire possibili errori
- 22. IntelliJ avvia i processi con i diritti di amministratore?
- 23. Stabilizzando con garbo i processi sidekiq
- 24. Come migliorare la condivisione della memoria tra i processi unicorno con Ruby 2.0 su Linux
- 25. Chiama Win32/NT-Native API dal sottosistema Windows per i processi Linux?
- 26. Approccio per gestire i processi a vita lunga con Camel
- 27. Elimina tutti i processi per un dato utente
- 28. Esiste un modo delicato per interrompere i processi utilizzando Windows PowerShell?
- 29. In che modo i processi di supervisione controllano i processi? Lo stesso può essere fatto sulla JVM?
- 30. Creazione di GUI con Python in Linux
è possibile utilizzare 'os.kill (..)' per uccidere il processo –
o anche 'proc.terminate()' o 'proc.kill()' dal Python 2.6 –