#!/bin/bash
for container in $(docker ps -q); do
status=`docker exec $container ls /proc/$1 2>/dev/null`
if [ ! -z "$status" ]; then
name=`docker ps --filter ID=$container --format "{{.Names}}"`
echo "PID: $1 found in $container ($name)"
break;
fi
done;
6条答案
按热度按时间dced5bon1#
感谢@Alex Past和@Stanislav的帮助。但我没有得到完整的答案。我把它们结合起来。
总之,我有下一个。
第一
字符串
其中PID是来自命令
top
的进程的PID在输出中,我得到了systemd父进程的父进程PID。这个PID是docker容器的PID。
在我处决之后
型
其中 %PID% 是父PID。
在结果中,我有Docker的 CONTAINER ID。
这就是我想
zvms9eto2#
我想你需要这样的东西:
字符串
iszxjhcz3#
您可以找到此过程的所有父项:
字符串
这条链将包含容器
aydmsdu94#
我有点结合所有这些和写这两个班轮。希望有用的人。
字符串
第一行找到容器入口脚本并将其提供给docker inspect。
628mspwn5#
你应该能够对每个正在运行的容器使用
exec
来检查pid是否存在。当然,同一个进程id可以存在于多个容器中。下面是一个小的bash脚本,它可以根据每个容器中提供的pid来搜索正在运行的进程:字符串
举例来说:
型
enxuqcxy6#
您可以使用
ps -o ppid=
循环目标进程的父进程,并在每一步检查父进程的PID是否与其中一个容器匹配。字符串