python - terminar - Obtener el nombre del proceso por PID
listar procesos en ejecucion linux (4)
Para ventanas
Una forma de obtener todos los pids de programas en su computadora sin descargar ningún módulo:
import os
pids = []
a = os.popen("tasklist").readlines()
for x in a:
try:
pids.append(int(x[29:34]))
except:
pass
for each in pids:
print(each)
Si solo quería un programa o todos los programas con el mismo nombre y deseaba detener el proceso o algo así:
import os, sys, win32api
tasklistrl = os.popen("tasklist").readlines()
tasklistr = os.popen("tasklist").read()
print(tasklistr)
def kill(process):
process_exists_forsure = False
gotpid = False
for examine in tasklistrl:
if process == examine[0:len(process)]:
process_exists_forsure = True
if process_exists_forsure:
print("That process exists.")
else:
print("That process does not exist.")
raw_input()
sys.exit()
for getpid in tasklistrl:
if process == getpid[0:len(process)]:
pid = int(getpid[29:34])
gotpid = True
try:
handle = win32api.OpenProcess(1, False, pid)
win32api.TerminateProcess(handle, 0)
win32api.CloseHandle(handle)
print("Successfully killed process %s on pid %d." % (getpid[0:len(prompt)], pid))
except win32api.error as err:
print(err)
raw_input()
sys.exit()
if not gotpid:
print("Could not get process pid.")
raw_input()
sys.exit()
raw_input()
sys.exit()
prompt = raw_input("Which process would you like to kill? ")
kill(prompt)
Eso fue solo una pasta de mi programa de eliminación de procesos. Podría hacerlo mucho mejor, pero está bien.
Esto debería ser simple, pero simplemente no lo veo.
Si tengo un ID de proceso, ¿cómo puedo usarlo para obtener información sobre el proceso, como el nombre del proceso?
Prueba esto
def filter_non_printable(str):
ret=""
for c in str:
if ord(c) > 31 or ord(c) == 9:
ret += c
else:
ret += " "
return ret
#
# Get /proc/<cpu>/cmdline information
#
def pid_name(self, pid):
try:
with open(os.path.join(''/proc/'', pid, ''cmdline''), ''r'') as pidfile:
return filter_non_printable(pidfile.readline())
except Exception:
pass
return
Pruebe PSUtil -> https://github.com/giampaolo/psutil
Funciona bien en Windows y Unix, recuerdo.
Bajo Linux, puedes leer el sistema de archivos proc. Archivo /proc/<pid>/cmdline
contiene la línea de comandos.