当 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。但我认为这个脚本对于你的情况来说已经足够了。