我使用 alpine 镜像运行了一个容器,并timeout
在其中运行了一个命令。timeout
命令运行后,alpine 中留下了一个死进程,我无法使用 kill 命令杀死它。我的执行流程如下:运行一个 alpine 容器
# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.20.0
PRETTY_NAME="Alpine Linux v3.20"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
使用timeout
执行命令
# timeout -k 10 5 /bin/sleep 20
Terminated
此后,容器中会留有一个超时的死进程,并且无法通过 kill 将其杀死。
# ps -ef
PID USER TIME COMMAND
1 root 0:00 sleep infinity
18 root 0:00 sh
33 root 0:00 [timeout]
36 root 0:00 ps -ef
# kill -9 33
# ps -ef
PID USER TIME COMMAND
1 root 0:00 sleep infinity
18 root 0:00 sh
33 root 0:00 [timeout]
37 root 0:00 ps -ef
超时版本
# timeout --help
BusyBox v1.36.1 (2024-05-21 13:38:37 UTC) multi-call binary.
Usage: timeout [-s SIG] [-k KILL_SECS] SECS PROG ARGS
Run PROG. Send SIG to it if it is not gone in SECS seconds.
Default SIG: TERM.If it still exists in KILL_SECS seconds, send KILL.