我使用从here获取的以下脚本来杀死CPU占用率高的进程:
#!/bin/bash
# tries to kill process with highest CPU load
# (if it is part of a specified list of troublemakers)
TROUBLEMAKERS="java Rscript"
sleep 1 # wait a few seconds (just as a precaution)
TOPPROCESS=$(top -b -n 1 | sed 1,6d | sed -n 2p)
TOPPID=$(echo "$TOPPROCESS" | awk '{print $1}')
TOPNAME=$(echo "$TOPPROCESS" | awk '{print $12}')
if [[ "$TROUBLEMAKERS" == *"$TOPNAME"* ]]
then
echo "Cause of high CPU load: "$TOPNAME" ("$TOPPID")"
echo "In troublemaker list. Killing..."
kill -9 $TOPPID
else
echo "Cause of high CPU load: "$TOPNAME" ("$TOPPID")"
echo "Not in troublemaker list. Exiting..."
exit 1
fi
exit 0
可以看出,TROUBLEMAKERS
包含可能导致高CPU负载的进程列表。例如,如果我执行命令java myfile
并且该命令占用CPU,它将被杀死。
现在,如果我执行./anotherfile
,那么我需要在TROUBLEMAKERS
中添加哪个进程名称才能终止包含具有高CPU使用率的./
的命令?
放TROUBLEMAKERS="java Rscript ./"
不起作用。
答案 0 :(得分:0)
你可以试试,kill -9 < pid# >
,无论什么变数,都会杀死一个过程。