热点
UI测试工程师的Windows运行库配置与开发环境全攻略,reasoning_content:我们要求以UI测试工程师的口吻写一个与技术、科技相关,关于[Windows运行库配置与管理:轻松搭建开发环境全攻略]的标题需要直接输出标题,不要加说明字数30字以内,简短精炼nn思路:UI测试工程师口吻,可能注重稳定性、兼容性、环境配置等可以结合运行库、配置、开发环境、攻略等词例如:UI测试工程师必看:Windows运行库配置一步到位 但需要更精简或者Windows运行库配置:UI测试环境搭建指南注意不要超过30字nn尝试:UI测试工程师:Windows运行库配置与开发环境搭建全攻略 字数?数一下:UI测试工程师:Windows运行库配置与开发环境搭建全攻略 – 共22个汉字+标点?实际汉字:UI(2字母算2个? 通常中文字数按汉字算,但UI是英文字母,题目说字数控制在30字以内,一般指汉字或字符?安全起见,用中文字符可以写成UI测试工程师即4个汉字+2个字母?严格来说,可以把UI视为两个字符为了简洁,可以写UI测试工程师共5个字符(U、I、测、试、工、程、师?不对,U,I,测,试,工,程,师 7个字符但通常算字数时英文字母算半个或一个?稳妥起见,用全中文表达,比如界面测试工程师但原要求是UI测试工程师,最好保留UInn可以写:【UI测试工程师】Windows运行库配置与环境搭建攻略 – 数一下:【UI测试工程师】Windows运行库配置与环境搭建攻略 – 汉字+符号:共? 【(1)、U(1)、I(1)、(1)、测(1)、试(1)、工(1)、程(1)、师(1)、】(1)、W(1)、i(1)、n(1)、d(1)、o(1)、w(1)、s(1)、运(1)、行(1)、库(1)、配(1)、置(1)、与(1)、环(1)、境(1)、搭(1)、建(1)、攻(1)、略(1) – 共29个字符?还有空格?实际有29个字符,但包含英文字母和符号可能超30?再算:符号算一个,英文字母每个算一个,总共:括号两个, UI两个, 汉字:测试工程师(4) Windows(7) 运行库配置与环境搭建攻略(13) 合计2+2+4+7+13=28加上中间可能没有空格28个,可以但【】可能不必要更简洁:nnUI测试工程师:Windows运行库配置与开发环境搭建 字数:UI测试工程师(7字符) :(1) Windows(7) 运行库配置与开发环境搭建(13) 合计7+1+7+13=28,可以但缺少全攻略意味或者轻松搭建nn另一个:Windows运行库配置:UI测试工程师开发环境搭建指南 字数:Windows运行库配置(11) :(1) UI测试工程师(7) 开发环境搭建指南(9) 合计11+1+7+9=28也不错nn最终选择简洁且有全攻略的考虑:UI测试工程师的Windows运行库配置与开发环境全攻略 字数:UI测试工程师的(8) Windows运行库配置与开发环境全攻略(16) 合计24字OKnn注意:要直接输出,不要加说明所以输出这个
分布式事务专家谈架构精要:语言选型、函数设计与变量管理,reasoning_content:我们要求以分布式事务专家的口吻,写一个与“技术、科技”相关,关于[后端架构精要:语言选型、函数设计与变量管理指南]的标题直接输出一个标题,不要加说明提示等信息简短精炼,字数控制在30字以内nn标题需要体现分布式事务专家的口吻,同时涵盖后端架构精要、语言选型、函数设计、变量管理可能的标题如:分布式事务专家谈后端架构:语言选型与函数设计变量管理精要 但字数可能超或者更简洁:专家视角:后端架构精要之语言选型与函数变量管理 但需要体现分布式事务专家可以:分布式事务专家:后端架构精要之语言选型与函数变量管理 字数?数一下:分布式事务专家:后端架构精要之语言选型与函数变量管理(共?)分布式事务专家:后端架构精要之语言选型与函数变量管理 汉字+标点:分(1)布(2)式(3)事(4)务(5)专(6)家(7):(8)后(9)端(10)架(11)构(12)精(13)要(14)之(15)语(16)言(17)选(18)型(19)与(20)函(21)数(22)变(23)量(24)管(25)理(26) 共26个字,在30以内但变量管理可能不够精确,原题是变量管理指南,可以保留指南?但字数限制或者分布式事务专家:后端架构精要-语言选型、函数设计与变量管理 多了设计尝试更精简:分布式事务专家:后端架构之语言选型与函数变量管理 去掉精要,更短但原题有精要,最好体现或者分布式事务专家谈架构精要:语言选型与函数变量管理 字数?分布式事务专家谈架构精要:语言选型与函数变量管理 共20字?数:分(1)布(2)式(3)事(4)务(5)专(6)家(7)谈(8)架(9)构(10)精(11)要(12):(13)语(14)言(15)选(16)型(17)与(18)函(19)数(20)变(21)量(22)管(23)理(24) 24字可以但缺少设计,原题有函数设计,这里只用了函数没提设计可以改为函数设计与变量管理但字数增加分布式事务专家谈架构精要:语言选型、函数设计与变量管理 数:分1布2式3事4务5专6家7谈8架9构10精11要12:13语14言15选16型17、18函19数20设21计22与23变24量25管26理27 共27字,可以接受标点算一个字?中文标点算一个字符27字符合输出这个标题即可nn另外,注意要求是与“技术、科技”相关,这个标题已经涉及技术科技直接输出
16 9 月 2026, 周三

怎样优雅的关闭容器,看本文就够了

1 信号
信号是事件发生时对进程的通知机制,有时也称之为软件中断。
 
信号有不同的类型,Linux 对标准信号的编号为 1~31,可以通过 kill -l 获取信号名称:
 
# kill -l  
 1) SIGHUP       2) SIGINT       3) SIGQUIT     
 4) SIGILL       5) SIGTRAP      6) SIGABRT    
 7) SIGBUS       8) SIGFPE       9) SIGKILL
 10) SIGUSR1    11) SIGSEGV     12) SIGUSR2
 13) SIGPIPE    14) SIGALRM     15) SIGTERM
… …
实际列出的信号超过了 31 个,有些是其它名称的同义词,有些则是定义但未使用的。以下介绍几个常用的信号:
 
 1) SIGHUP 当终端断开(挂机)时,将发送该信号给终端控制进程。SIGHUP 信号还可用于守护进程(比如,init 等)。许多守护进程会在收到 SIGHUP 信号时重新进行初始化并重读配置文件。
 2) SIGINT 当用户键入终端中断字符(通常为 Control-C ) 时,终端驱动程序将发送该信号给前台进程组。该信号的默认行为是终止进程。
 3) SIGQUIT 当用户在键盘上键入退出字符(通常为 Control-\ )时,该信号将发往前台进程组。默认情况下,该信号终止进程,并生成用于调试的核心转储文件。进程如果陷入无限循环,或者不再响应时,使用 SIGQUIT 信号就很合适。
 9) SIGKILL 此信号为 “必杀(sure kill)” 信号,处理器程序无法将其阻塞、忽略或者捕获,故而 “一击必杀”,总能终止程序。
 15) SIGTERM 这是用来终止进程的标准信号,也是 kill 、 killall 、 pkill 命令所发送的默认信号。精心设计的应用程序应当为 SIGTERM 信号设置处理器程序,以便其能够预先清除临时文件和释放其它资源,从而全身而退。因此,总是应该先尝试使用 SIGTERM 信号来终止进程,而把 SIGKILL 作为最后手段,去对付那些不响应 SIGTERM 信号的失控进程。
 20) SIGTSTP 这是作业控制的停止信号,当用户在键盘上输入挂起字符(通常为 Control-Z )时,将该信号给前台进程组,使其停止运行。
值得注意的是, Control-D 不会发起信号,它表示 EOF(End-Of-File),关闭标准输入(stdin)管道(比如可以通过 Control-D 退出当前 shell)。如果程序不读取当前输入的话,是不受 Control-D 影响的。
2 ENTRYPOINT 、 CMD
可能有人会问,说了半天,那信号和优雅的关闭容器有半毛钱的关系啊?话说,这和钱确实没关系,但是和如何优雅关闭容器却关系密切。
 
接着说 Dockerfile 中的 ENTRYPOINT 和 CMD 指令,它们的主要功能是指定容器启动时执行的程序。
 
CMD 有三种格式:
 
 CMD ["executable","param1","param2"] (exec 格式, 推荐使用这种格式)
 CMD ["param1","param2"] (作为 ENTRYPOINT 指令参数)
 CMD command param1 param2 (shell 格式,默认 /bin/sh -c )
ENTRYPOINT 有两种格式:
 
 ENTRYPOINT ["executable", "param1", "param2"] (exec 格式,推荐优先使用这种格式)
 ENTRYPOINT command param1 param2 (shell 格式)
其中,不管你 Dockerfile 用其中哪个指令,两个指令都推荐使用 exec 格式,而不是 shell 格式。原因就是因为使用 shell 格式之后,程序会以 /bin/sh -c 的子命令启动,并且 shell 格式下不会传递任何信号给程序。这也就导致,在 docker stop 容器的时候,以这种格式运行的程序捕捉不到发送的信号,也就谈不上优雅的关闭了。
 
➜  ~ docker stop –help  
Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER…]  
Stop one or more running containers  
Options:  
      –help       Print usage  
  -t, –time int   Seconds to wait for stop before killing it (default 10)
docker stop 停掉容器的时候,默认会发送一个 SIGTERM 的信号,默认 10s 后容器没有停止的话,就 SIGKILL 强制停止容器。通过 -t 选项可以设置等待时间。
 
➜  ~ docker kill –help  
Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER…]  
Kill one or more running containers  
Options:  
      –help            Print usage  
  -s, –signal string   Signal to send to the container (default "KILL")
通过 docker kill 的 -s 选项还可以指定给容器发送的信号。
 
所以,说了那么多,只要 Dockerfile 中通过 exec 格式执行容器启动命令就相安无事了?那当然是,没有那么简单的了,接下来我们通过实例来看看具体的效果是怎么样的。2 ENTRYPOINT 、 CMD
可能有人会问,说了半天,那信号和优雅的关闭容器有半毛钱的关系啊?话说,这和钱确实没关系,但是和如何优雅关闭容器却关系密切。
 
接着说 Dockerfile 中的 ENTRYPOINT 和 CMD 指令,它们的主要功能是指定容器启动时执行的程序。
 
CMD 有三种格式:
 
 CMD ["executable","param1","param2"] (exec 格式, 推荐使用这种格式)
 CMD ["param1","param2"] (作为 ENTRYPOINT 指令参数)
 CMD command param1 param2 (shell 格式,默认 /bin/sh -c )
ENTRYPOINT 有两种格式:
 
 ENTRYPOINT ["executable", "param1", "param2"] (exec 格式,推荐优先使用这种格式)
 ENTRYPOINT command param1 param2 (shell 格式)
其中,不管你 Dockerfile 用其中哪个指令,两个指令都推荐使用 exec 格式,而不是 shell 格式。原因就是因为使用 shell 格式之后,程序会以 /bin/sh -c 的子命令启动,并且 shell 格式下不会传递任何信号给程序。这也就导致,在 docker stop 容器的时候,以这种格式运行的程序捕捉不到发送的信号,也就谈不上优雅的关闭了。
 
➜  ~ docker stop –help  
Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER…]  
Stop one or more running containers  
Options:  
      –help       Print usage  
  -t, –time int   Seconds to wait for stop before killing it (default 10)
docker stop 停掉容器的时候,默认会发送一个 SIGTERM 的信号,默认 10s 后容器没有停止的话,就 SIGKILL 强制停止容器。通过 -t 选项可以设置等待时间。
 
➜  ~ docker kill –help  
Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER…]  
Kill one or more running containers  
Options:  
      –help            Print usage  
  -s, –signal string   Signal to send to the container (default "KILL")
通过 docker kill 的 -s 选项还可以指定给容器发送的信号。
 
所以,说了那么多,只要 Dockerfile 中通过 exec 格式执行容器启动命令就相安无事了?那当然是,没有那么简单的了,接下来我们通过实例来看看具体的效果是怎么样的。

dawei

您错过了

UI测试工程师的Windows运行库配置与开发环境全攻略,reasoning_content:我们要求以UI测试工程师的口吻写一个与技术、科技相关,关于[Windows运行库配置与管理:轻松搭建开发环境全攻略]的标题需要直接输出标题,不要加说明字数30字以内,简短精炼nn思路:UI测试工程师口吻,可能注重稳定性、兼容性、环境配置等可以结合运行库、配置、开发环境、攻略等词例如:UI测试工程师必看:Windows运行库配置一步到位 但需要更精简或者Windows运行库配置:UI测试环境搭建指南注意不要超过30字nn尝试:UI测试工程师:Windows运行库配置与开发环境搭建全攻略 字数?数一下:UI测试工程师:Windows运行库配置与开发环境搭建全攻略 – 共22个汉字+标点?实际汉字:UI(2字母算2个? 通常中文字数按汉字算,但UI是英文字母,题目说字数控制在30字以内,一般指汉字或字符?安全起见,用中文字符可以写成UI测试工程师即4个汉字+2个字母?严格来说,可以把UI视为两个字符为了简洁,可以写UI测试工程师共5个字符(U、I、测、试、工、程、师?不对,U,I,测,试,工,程,师 7个字符但通常算字数时英文字母算半个或一个?稳妥起见,用全中文表达,比如界面测试工程师但原要求是UI测试工程师,最好保留UInn可以写:【UI测试工程师】Windows运行库配置与环境搭建攻略 – 数一下:【UI测试工程师】Windows运行库配置与环境搭建攻略 – 汉字+符号:共? 【(1)、U(1)、I(1)、(1)、测(1)、试(1)、工(1)、程(1)、师(1)、】(1)、W(1)、i(1)、n(1)、d(1)、o(1)、w(1)、s(1)、运(1)、行(1)、库(1)、配(1)、置(1)、与(1)、环(1)、境(1)、搭(1)、建(1)、攻(1)、略(1) – 共29个字符?还有空格?实际有29个字符,但包含英文字母和符号可能超30?再算:符号算一个,英文字母每个算一个,总共:括号两个, UI两个, 汉字:测试工程师(4) Windows(7) 运行库配置与环境搭建攻略(13) 合计2+2+4+7+13=28加上中间可能没有空格28个,可以但【】可能不必要更简洁:nnUI测试工程师:Windows运行库配置与开发环境搭建 字数:UI测试工程师(7字符) :(1) Windows(7) 运行库配置与开发环境搭建(13) 合计7+1+7+13=28,可以但缺少全攻略意味或者轻松搭建nn另一个:Windows运行库配置:UI测试工程师开发环境搭建指南 字数:Windows运行库配置(11) :(1) UI测试工程师(7) 开发环境搭建指南(9) 合计11+1+7+9=28也不错nn最终选择简洁且有全攻略的考虑:UI测试工程师的Windows运行库配置与开发环境全攻略 字数:UI测试工程师的(8) Windows运行库配置与开发环境全攻略(16) 合计24字OKnn注意:要直接输出,不要加说明所以输出这个