在命令方面,我需要帮助,在命令中,我尝试用kubectl实现ecm模拟器的PID,并杀死相同的I:
kubectl exec eric-service-0 -n cicd --kubeconfig /root/admin.conf -- bash -c "ps -ef | grep ecm | grep node | awk '{print $2}' "上面命令的输出:
root 9857 0 0 07:11 ? 00:00:00 bash -c /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js> /tmp/simulatorEcmResponse.txt
root 9863 9857 0 07:11 ? 00:00:00 /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js预期输出是:
9857
9863然后,我需要杀死PID:
kubectl exec eric-service-0 -n cicd --kubeconfig /root/admin.conf -- bash -c "ps -ef | grep ecm | grep node | awk '{print $2}' | xargs kill -9"当我在服务舱内执行相同的操作时,它是工作的,但是当我从外部通过kubectl执行时,它会产生问题。
有人能告诉我我在这里做错了什么吗?
注意:有两个PID需要从下面的输出中删除:
eric-service-0:/ # ps -ef | grep ecm | grep node
root 9857 0 0 07:11 ? 00:00:00 bash -c /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js> /tmp/simulatorEcmResponse.txt
root 9863 9857 0 07:11 ? 00:00:00 /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js编辑:
@Cyrus要求的命令输出如下:

发布于 2020-03-05 15:46:18
将此作为Community的答案,以获得更好的可见性。解决方案已在@Cyrus的评论中提供。
简而言之,OP想要使用他们的PID's来杀死/中断某些进程。OP希望在包含ecm simulator的特定的pod/容器上从集群级别进行此操作。
为此,使用了以下命令:
exec -在容器中执行命令-- bash -在容器内运行bashps -ef -列出系统上的所有进程grep - serch特定模式awk -模式扫描和处理语言。xargs -从标准输入构建和执行命令行kill -向进程发送信号在MANUAL中,您可以找到一些有关ps标志的信息:
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely但是,每个标志仍将提供另一个输出,如下所示:
-e
PID TTY TIME CMD
-ef
UID PID PPID C STIME TTY TIME CMD赛勒斯建议使用以下命令:
kubectl exec eric-service-0 -n cicd --kubeconfig /root/admin.conf -- bash -c "pgrep -f 'node.*ecm'"
bash -c-如果存在-c选项,则从第一个非选项参数command_string中读取命令。
还请在评论中解释:
pgrep查看当前正在运行的进程,并列出与stdout的选择条件匹配的进程ID。从男人那里。节点.*ecm是一个regex。
https://stackoverflow.com/questions/60473862
复制相似问题