Ubuntu 22 配置vscode内存监控脚本为系统服务

在ubuntu上vscode的cpptools总是占用过高内存导致系统卡死,使用下面方式监控cpptools内存,内存超过限额自动杀死cpptools进程,以此达到防止系统卡死的目的。

一、创建 systemd 服务文件(Ubuntu22.04 使用 systemd)

  1. 先把脚本保存为文件

    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
  1. 添加执行权限

    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