From 09f73bb770243a541c6b31879d5539185da102bb Mon Sep 17 00:00:00 2001 From: gitea Date: Thu, 30 Nov 2023 08:32:14 +0800 Subject: [PATCH] [modify] add new functions of find docker pid and print top 20 info of mem & cpu --- utool/pid_in_docker.sh | 18 ++++++++++++++++++ utool/ps_top_20.sh | 17 +++++++++++++++++ utool/utool.py | 20 ++++++++++++++++++-- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 utool/pid_in_docker.sh create mode 100644 utool/ps_top_20.sh diff --git a/utool/pid_in_docker.sh b/utool/pid_in_docker.sh new file mode 100644 index 0000000..2d26c5f --- /dev/null +++ b/utool/pid_in_docker.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +psid=$1 + +ids=$(docker inspect -f "{{.Id}}" $(docker ps -q)) + +for did in $ids; do + docker top $did | awk '{print $2, $3}' | grep -wq $psid + if [[ $? -eq 0 ]]; then + echo "Docker ID : $did" + name=$(docker inspect -f '{{.Name}}' $did | tr -d "/") + echo "Docker Name: $name" + exit 0 + fi +done + +echo "Not a docker (sub)process..." + diff --git a/utool/ps_top_20.sh b/utool/ps_top_20.sh new file mode 100644 index 0000000..5c2af9c --- /dev/null +++ b/utool/ps_top_20.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# ps -ely | sort -nrk 8 | head -n 20 | awk 'BEGIN{print "UID", "PID", "PPID", "RSS", "CMD"} {print $2, $3, $4, $8/1024"M", $NF}' | column -t +fmt="%-9s%-9s%-6s%-6s\033[1;32m%-8s\033[0m%-10s\n" +awk -v fmt=$fmt 'BEGIN{printf fmt, "PID","PPID","%CPU","%MEM","RSS","COMM"}' > /tmp/mem.top +ps -eo pid,ppid,pcpu,pmem,rss,comm | grep -Ev "grep|ps" | sort -nrk 5 | head -n 20 | awk -v fmt=$fmt '{printf fmt, $1,$2,$3,$4,int($5/1024)"M",$6}' >> /tmp/mem.top + +> /tmp/deli.top +for i in `seq 21`; do + echo '|' >> /tmp/deli.top +done + +fmt="%-9s%-9s\033[1;34m%-6s\033[0m%-6s%-8s%-10s\n" +awk -v fmt=$fmt 'BEGIN{printf fmt, "PID","PPID","%CPU","%MEM","RSS","COMM"}' > /tmp/cpu.top +ps -eo pid,ppid,pcpu,pmem,rss,comm | sort -nrk 3 | grep -Ev "grep|ps" | head -n 20 | awk -v fmt=$fmt '{printf fmt, $1,$2,$3,$4,int($5/1024)"M",$6}' >> /tmp/cpu.top + +paste /tmp/mem.top /tmp/deli.top /tmp/cpu.top | column -t +rm -rf /tmp/{mem.top,cpu.top,deli.top} diff --git a/utool/utool.py b/utool/utool.py index 570dfb2..7be953a 100755 --- a/utool/utool.py +++ b/utool/utool.py @@ -84,6 +84,22 @@ def utool(option): os.environ['param'] = param os.system('/usr/bin/bash /opt/scripts/utool/date2n.sh $param') + # -h + def usage(): + exit_on_wrong_number() + print_usage() + + # -i + def ps_top_20(): + exit_on_wrong_number() + os.system("/usr/bin/bash /opt/scripts/utool/ps_top_20.sh") + + # -j + def docker_pid(): + exit_on_wrong_number(2) + os.environ['param'] = sys.argv[2] + os.system('/usr/bin/bash /opt/scripts/utool/pid_in_docker.sh $param') + # -p def gen_passwd(): exit_on_wrong_number(2) @@ -114,9 +130,9 @@ def utool(option): '-t': ['Reserved', None], '-h': [' show this help information and exit', print_usage], '-u': ['Reserved', None], - '-i': ['Reserved', None], + '-i': [' print top 20 mem and cpu process', ps_top_20], '-v': ['Reserved', None], - '-j': ['Reserved', None], + '-j': ['*find a docker subprocess, if true then print info', docker_pid], '-w': ['Reserved', None], '-k': ['Reserved', None], '-x': ['Reserved', None],