我写了一个简单的bash脚本,除了睡觉之外什么都不做.
#!/bin/bash
echo "Sleeping..."
sleep 180s
Run Code Online (Sandbox Code Playgroud)
运行脚本后,我看到系统上运行了两个进程:
user 22880 0.0 0.0 12428 1412 pts/28 S+ 20:12 0:00 /bin/bash ./sleep.sh
user 22881 0.0 0.0 7196 356 pts/28 S+ 20:12 0:00 sleep 180s
Run Code Online (Sandbox Code Playgroud)
我通过使用哪个来杀死进程SIGTERM
来给id 进程.但是,在此之后,我仍然看到运行的sleep命令在180秒后退出.22880
kill -15 22880
user 22881 0.0 0.0 7196 356 pts/28 S 20:12 0:00 sleep 180s
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如果不让sleep 180s
流程继续运行,我需要做什么?
我有一个 docker-compose.yml 启动多个容器。其中之一使用 Dockerimage 文件来安装该容器中所需的所有内容。
我想添加一个每次等待中断信号 0、9 和 137 时运行的脚本。
现在,我尝试将脚本作为 Dockerimage 文件中的入口点运行,但似乎不起作用。
这是 Dockerimage 文件的内容:
RUN apt-get update && [...]
WORKDIR "/application"
ENTRYPOINT ["/bin/bash", "-c", "/application/scripts/cl.sh"]
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?我需要使用以下命令重建容器吗?
docker-compose build
Run Code Online (Sandbox Code Playgroud)
这是bash脚本cl.sh的内容
#!/bin/bash
echo "HELLO HELLO HELLO HELLO"
trap 'echo "Exiting with a 137 signal."' 137 0 9
Run Code Online (Sandbox Code Playgroud)
目前该脚本的唯一目的是测试所有功能。
当我将应用程序设置为通过 运行时docker-compose up
,需要几秒钟才能在 ctrl+c 上停止。但是,如果我运行docker kill ...
,容器会很快停止。当通过 ctrl+c 杀死时,我可以做些什么来加速容器关闭docker-compose up
?
特别是,当 docker-compose 说它“正常停止”时,这实际上意味着什么?docker-compose 是否尝试了一些关闭协议,然后仅在超时后才终止我的容器?