帮我写一个shell脚本,ps -eo pid,lstart,cmd --sort=-start_time | grep "pgz-admin"查到的结果,返回的所有进程PID,第六个之上的,全部kill
当然,你可以创建一个简单的Shell脚本来完成这个任务。以下是一个例子:
#!/bin/bash
# 获取包含 "pgz-admin" 字符串的进程的PID列表
pids=$(ps -eo pid,lstart,cmd --sort=-start_time | grep "pgz-admin" | awk '{print $1}')
# 获取PID列表中第六个及之后的PID
pids_to_kill=$(echo "$pids" | awk 'NR>5')
# 杀死所有符合条件的进程
for pid in $pids_to_kill; do
echo "Killing process with PID: $pid"
kill -9 "$pid"
done
echo "Processes killed."
无注释版本
#!/bin/bash
pids=$(ps -eo pid,lstart,cmd --sort=-start_time | grep "pgz-admin" | awk '{print $1}')
pids_to_kill=$(echo "$pids" | awk 'NR>6')
for pid in $pids_to_kill; do
echo "Killing process with PID: $pid"
kill -9 "$pid"
done
echo "Processes killed."
这个脚本执行以下操作:
- 使用
ps
命令获取包含 "pgz-admin" 字符串的进程的PID列表。 - 使用
awk
提取PID列。 - 使用
awk 'NR>5'
从PID列表中获取第六个及之后的PID。 - 使用
kill -9
命令杀死所有符合条件的进程。
请确保在运行脚本之前你有足够的权限,因为kill -9
是强制终止进程的操作。在脚本中使用 echo
语句,可以看到被杀死的进程的PID。
不包含颜色,将5改为6,或者用以下
#!/bin/bash
# 获取包含 "pgz-admin" 字符串的进程的PID列表
pids=$(ps -eo pid,lstart,cmd --sort=-start_time | grep --color=never "pgz-admin" | awk '{print $1}')
# 获取PID列表中第六个及之后的PID
pids_to_kill=$(echo "$pids" | awk 'NR>5')
# 杀死所有符合条件的进程
for pid in $pids_to_kill; do
echo "Killing process with PID: $pid"
kill -9 "$pid"
done
echo "Processes killed."
在这个脚本中,grep --color=never 选项用于禁用颜色输出。这样可以确保grep输出不会受到颜色的影响。