在这篇博客中,我们将介绍如何使用Python的psutil
库来监控新进程的创建。这个脚本会每秒检查一次系统中的进程,并打印出新创建的进程的PID和名称。
代码解析
首先,我们需要导入psutil
和time
库。
import psutil
import time
接下来,我们定义了一个函数get_current_processes()
,它会返回当前所有进程的pid和名称。
def get_current_processes():
# 获取当前所有进程的pid和名称
return {p.pid: p.name() for p in psutil.process_iter(['pid', 'name'])}
然后,我们定义了一个函数print_new_processes(old_processes)
,它会获取新的进程,并打印出新进程的pid和名称。
def print_new_processes(old_processes):
# 获取新的进程
current_processes = get_current_processes()
new_processes = {pid: name for pid, name in current_processes.items() if pid not in old_processes}
# 打印新进程的pid和名称
for pid, name in new_processes.items():
print(f"New process detected: PID={pid}, Name={name}")
# 打印新进程的数量
print(f"Number of new processes: {len(new_processes)}")
return current_processes
最后,我们在主函数中初始化进程列表,并在无限循环中每秒检查一次新的进程。
if __name__ == "__main__":
processes = get_current_processes()
while True:
processes = print_new_processes(processes)
time.sleep(1) # 每秒检查一次
完整代码如下
import psutil
import time
def get_current_processes():
# 获取当前所有进程的pid和名称
return {p.pid: p.name() for p in psutil.process_iter(['pid', 'name'])}
def print_new_processes(old_processes):
# 获取新的进程
current_processes = get_current_processes()
new_processes = {pid: name for pid, name in current_processes.items() if pid not in old_processes}
# 打印新进程的pid和名称
for pid, name in new_processes.items():
print(f"New process detected: PID={pid}, Name={name}")
# 打印新进程的数量
print(f"Number of new processes: {len(new_processes)}")
return current_processes
if __name__ == "__main__":
processes = get_current_processes()
while True:
processes = print_new_processes(processes)
time.sleep(1) # 每秒检查一次
运行结果:
总结
这个简单的Python脚本可以帮助我们监控新进程的创建,对于理解系统行为和进行性能分析非常有用。希望你喜欢这篇博客,如果有任何问题或建议,欢迎留言讨论。下次再见!