帮我写一个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输出不会受到颜色的影响。
领取专属 10元无门槛券
私享最新 技术干货