答案1
这个怎么样?它可能需要一些调整,但我相信您可以以此为起点来解决这个问题。您可以从 cron 运行它。如果由于某种原因它不起作用,则可能是由于网站而导致的格式错误。
#!/bin/bash # 内部字段分隔符 IFS=“ ” # 设置 minUid=1000 # 要杀死的最小UID(保护服务和root) maxCpu=25 # 进程在 $maxTime 内可以消耗的最大 %CPU maxTime=3600 # 进程可以运行的最大时间,以秒为单位 # 加载并格式化进程列表 psList=$(ps -eo pid,uid,pcpu,etimes,args | awk '{ print $1" "$2" "$3" "$4" "$5}' | tail -n+2) 回声 请稍候... # 对每个进程执行此操作 对于 $psList 中的进程;做 { pid=$(echo $process | cut -d' ' -f1) #pid uid=$(echo $process | cut -d' ' -f2) #uid cpu=$(echo $process | cut -d' ' -f3) #cpu 使用情况 cpu=$(printf "%.0f" $cpu) #将浮点数转换为整数 etimes=$(echo $process | cut -d' ' -f4) #自pid启动以来经过的时间 cmd=$(echo $process | cut -d' ' -f5) #命令名称 # 检查UID是否可以杀死 如果 [ $pid -ge $minUid ];然后 { # 检查是否符合时间+cpu使用限制 if [ $etimes -ge $maxTime ] && [ $cpu -ge $maxCpu ] ;然后 { # 确定要杀死的进程 echo "kill pid=$pid uid=$uid cpu=$cpu etimes=$etimes cmd=$cmd" 杀死 -KILL $pid } fi } fi } 完毕