在ubuntu上vscode的cpptools总是占用过高内存导致系统卡死,使用下面方式监控cpptools内存,内存超过限额自动杀死cpptools进程,以此达到防止系统卡死的目的。
一、创建 systemd 服务文件(Ubuntu22.04 使用 systemd)
- 先把脚本保存为文件
vim /usr/local/bin/kill_cpptools.sh把下面完整内容粘贴进去:
#!/bin/bash # 阈值 20G = 20*1024*1024 = 20971520 KB THRESHOLD=20971520 while true; do # 读取 物理内存已用 + Swap 已用 mem_used=$(awk '/MemTotal/{t=$2}/MemAvailable/{a=$2}/SwapTotal/{st=$2}/SwapFree/{sf=$2} END{print (t-a)+(st-sf)}' /proc/meminfo) if [ "$mem_used" -gt "$THRESHOLD" ]; then pkill -f cpptools-srv fi sleep 1 done- 添加执行权限
chmod +x /usr/local/bin/kill_cpptools.sh二、新建 systemd 服务单元
vim /etc/systemd/system/kill-cpptools.service写入以下内容:
[Unit] Description=Auto kill cpptools-srv when memory exceed 20G After=network.target [Service] Type=simple ExecStart=/usr/local/bin/kill_cpptools.sh Restart=always RestartSec=3 [Install] WantedBy=multi-user.target保存退出wq。
三、启用并开机自启
# 重新加载systemd配置 systemctl daemon-reload # 设置开机启动 systemctl enable kill-cpptools.service # 立即启动服务 systemctl start kill-cpptools.service