我如何才能自动结束特定进程?

我如何才能自动结束特定进程?

当 RAM 达到 400 MB 时,如何自动结束特定进程?完成后如何将其改回原样?有没有什么程序或脚本之类的东西?!

答案1

示例脚本如下:

#!/bin/bash

# Here put the name of your process
ProcName="process_name"
# Here put the desired memory limit in KBytes
MemLimit=400000
ProcID=$(pidof "$ProcName")
if [ -z "$ProcID" ] ; then echo "Process not found" ; exit ; fi

while true
do
  MemCurrent=$(grep VmSize /proc/"$ProcID"/status | cut -f 2 | tr -d ' kB')
  if [ $MemCurrent -gt $MemLimit ]
  then
    kill -9 "$ProcID"
    exit
  fi
  sleep 5
done

ProcName在和变量中设置所需的进程名称和内存限制MemLimit。将此脚本保存在某处,例如~/killer.sh。使其可执行:chmod +x killer.sh。然后运行它:./killer.sh

你是什​​么意思 ”改回来“?

注意:实际上VmSize不会给你准确的内存使用情况。计算实际进程内存使用量是一项复杂的任务。你可以在这里获得一些见解:https://stackoverflow.com/questions/131303。但我认为这个脚本对于你的情况来说已经足够了。

相关内容