进程杀死的问题-转

博客介绍了两种防止Windows进程被随意杀死的办法。一是采用NTService启动进程,以system为用户,避免用户用任务管理器杀死;二是创建进程时设置DACL,取消非特权用户的TerminateProcess执行权限,此方法需了解Windows安全性且兼容Windows NT 3.1以上。
有两种解决办法:

第一种是采用NTService来启动这个进程,Service的用户是system,因此用户就不能随意用任务管理器杀死这个进程了。

第二种是在创建时设置进程的DACL(用户访问控制列表),取消非特权用户的TerminateProcess执行权限,这种方法兼容在WindowsNT3.1以上,需要对Windows安全性有一定了解。

### 在Ubuntu系统中杀死nvidia-smi未显示的进程的方法 在某些情况下,即使使用 `nvidia-smi` 也无法查看到占用显存的进程,这可能是由于进程已经被终止但显存尚未释放。以下方法可以用来解决这个问题: #### 方法一:使用 `fuser` 命令查找并强制结束占用显存的进程 1. 首先确保系统已安装 `fuser` 命令。如果系统提示 `fuser: command not found`,可以通过安装 `psmisc` 包来获取该命令: ```bash sudo apt-get install psmisc ``` 2. 使用 `fuser` 命令查找占用 GPU 显存的进程。例如,假设 GPU 的设备文件为 `/dev/nvidia0`,可以运行以下命令: ```bash sudo fuser -v /dev/nvidia0 ``` 这将显示所有正在使用该设备的进程及其 PID[^3]。 3. 如果找到相关进程,可以使用 `kill` 命令强制结束这些进程: ```bash sudo kill -9 PID ``` 将 `PID` 替换为实际的进程 ID。 #### 方法二:重启 NVIDIA 驱动以释放显存 如果无法通过上述方法找到占用显存的进程,可以尝试重启 NVIDIA 驱动程序以释放显存: 1. 卸载 NVIDIA 驱动模块: ```bash sudo rmmod nvidia ``` 2. 重新加载 NVIDIA 驱动模块: ```bash sudo modprobe nvidia ``` 这种方法会强制刷新驱动状态,并可能释放被占用的显存[^4]。 #### 方法三:检查是否有僵尸进程或残留资源 有训练程序被中断(如通过 `Ctrl+C`)后可能会留下未清理的资源。可以使用以下命令检查是否有相关的残留进程: ```bash ps aux | grep python ``` 如果有可疑的 Python 进程,可以手动终止它们: ```bash sudo kill -9 <Python_PID> ``` #### 方法四:使用 `gpustat` 或其他工具监控 GPU 状态 除了 `nvidia-smi`,还可以使用 `gpustat` 等工具实监控 GPU 的使用情况。安装 `gpustat` 的方法如下: ```bash pip install gpustat ``` 运行 `gpustat` 可以更直观地查看 GPU 的占用情况,并帮助定位问题[^2]。 --- ### 示例代码 以下是一个完整的脚本,用于自动查找并终止占用 `/dev/nvidia0` 的进程: ```bash #!/bin/bash # 安装 fuser 和 gpustat sudo apt-get install -y psmisc pip install gpustat # 查找占用 /dev/nvidia0 的进程 echo "查找占用 /dev/nvidia0 的进程..." fuser_result=$(sudo fuser -v /dev/nvidia0) if [ -z "$fuser_result" ]; then echo "没有找到占用 /dev/nvidia0 的进程。" else echo "找到以下占用 /dev/nvidia0 的进程:" echo "$fuser_result" # 提取 PID 并终止进程 echo "正在终止相关进程..." for pid in $(echo "$fuser_result" | awk '{print $2}'); do sudo kill -9 "$pid" echo "已终止 PID: $pid" done fi # 检查显存是否释放 echo "当前 GPU 使用情况:" nvidia-smi ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值