Esto debería ser simple, pero simplemente no lo estoy viendo.Obtener nombre del proceso por PID
Si tengo una ID de proceso, ¿cómo puedo usar eso para obtener información sobre el proceso, como el nombre del proceso?
Esto debería ser simple, pero simplemente no lo estoy viendo.Obtener nombre del proceso por PID
Si tengo una ID de proceso, ¿cómo puedo usar eso para obtener información sobre el proceso, como el nombre del proceso?
En Linux, puede leer el sistema de archivos proc. El archivo /proc/<pid>/cmdline
contiene la línea de comandos.
Una alternativa es 'ps -o cmd =
Y '/ proc/
Try PSUtil ->https://github.com/giampaolo/psutil
funciona bien en Windows y Unix, recuerdo.
Parece lo correcto. Sin embargo, me molesta que no esté en Debian 5. – andyortlieb
Ese es un problema (común) con debian, no con psutil;) –
puede simplemente "instalar python setup.py" para instalarlo desde las fuentes. –
Para Windows
una manera de conseguir todos los PIDs de los programas en su ordenador sin necesidad de descargar módulos:
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 sólo quería un programa o todos los programas con el mismo nombre y que quería para matar el proceso o algo:
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 sólo una pasta de mi programa de matar el proceso que podría hacerlo mucho mejor, pero está bien.
Prueba este
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
posible duplicado de [¿Cómo se obtiene el identificador de proceso de un programa en Python?] (Http://stackoverflow.com/questions/3761639/how-do-you-get -the-process-id-of-a-program-in-python) –
@PeterO. Esa pregunta es ** ** inversa de esta. –