业务背景
使用 top + grep 来判断一个进程是否退出。如果grep不到了,就说明退出里,否则等待1秒钟重新判断
测试进程process_abc
,sleep 5秒钟后自动退出
#include <stdio.h>
int main()
{
sleep(5);
return 0;
}
检测脚本
velscode@velscode:~/test$ cat check.sh
#/bin/bash
while true
do
top -n 1 -b | grep "process_abc"
if [ $? -eq 0 ];then
echo "process_abc alive, wait it"
sleep 1
else
echo "process_abc exit"
break
fi
done
问题现象
通过 docker run --it ..
进入容器bash,手工执行命令,正常
检测脚本检测到目标进程5次,每次等待1秒,process_abc退出后,执行结束
# 拉起容器的脚本
velscode@velscode:~/test$ cat run_manual.sh
DOCKER_CONTAINER_TAG=ubuntu/test:1.0
docker build -f Dockerfile . -t ${DOCKER_CONTAINER_TAG}
docker run -it --privileged \
-v $(pwd):/opt/ \
-w /opt/ \