python kill process两种思路

本文介绍了如何利用Python的subprocess库执行shell命令,实现直接通过shell命令杀掉指定端口的进程,以及先获取进程ID再进行kill操作的两种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用subprocess库执行shell操作。

一、直接使用shell杀进程

import subprocess
subprocess.check_output("for p in `lsof -n -i:8080 | grep LISTEN | awk '{print $2}'`; do kill -9 $p; done", shell=True)

二,先拿到进程号,在kill

port = subprocess.check_output("lsof -n -i:8080 | grep LISTEN | awk '{print $2}'", shell=True).decode().strip('\n')
        if port:
            subprocess.check_output('kill -9 {}'.format(port), shell=True)
### 进程管理中的`Process.terminate`与`kill`方法 在编程进程管理中,终止进程的操作可以通过多种方式实现。两种常见的方法分别是 `Process.terminate` 和 `kill` 函数。 #### 使用 `Process.terminate` 对于某些高级抽象库或框架而言,提供了更易于使用的接口来处理子进程生命周期管理的任务之一就是安全地中止它们的工作。例如,在 Python 的 multiprocessing 库里有 terminate 方法可以立即停止由该对象表示的子进程执行[^1]: ```python from multiprocessing import Process def example_function(): while True: pass # Simulate an infinite loop or long-running task if __name__ == '__main__': p = Process(target=example_function) p.start() # Terminate the process after starting it. p.terminate() # It's good practice to join the process afterward, # ensuring that resources are cleaned up properly. p.join() ``` 这种方法简单直观,适用于不需要复杂信号机制的情况;然而需要注意的是调用此函数可能会导致资源泄漏或其他未定义行为因为没有给目标程序足够的时间来进行清理工作。 #### 使用 `kill` 命令及其变体 另一方面,操作系统层面提供了一组更为底层也更加灵活强大的工具——即发送各种类型的 Unix 信号给指定 PID 所对应的正在运行着的应用实例从而改变其状态甚至强制结束掉它。最常用的就是 SIGTERM(15) 号码所代表的那种温和请求对方自行退出的通知形式以及 SIGKILL(9),后者几乎总是能够无条件地摧毁任何抵抗意志并迅速回收占用的一切物理内存页表项等宝贵计算资源[^2]: ```bash # Send a termination signal (SIGTERM) which allows graceful shutdown kill -s TERM <pid> # Forcefully kill the process without allowing cleanup operations kill -s KILL <pid> ``` 值得注意的是,在 POSIX 线程环境中还存在 pthread_cancel 功能用于取消其他线程上的操作,但这属于多线程范畴而非严格意义上的跨进程通信手段。 综上所述,虽然两者都能达到关闭目的的效果但是具体应用场景决定了应该选用哪一种策略:如果只是想要快速而粗暴地干掉某个不受控的服务端口监听者那么毫无疑问直接杀戮是最优解;反之当考虑到优雅降级和平滑过渡等因素时则建议优先尝试协商式的平和途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值