如何杀死交互式外壳程序以及在其上运行的进程/作业?

时间:2018-12-04 09:21:49

标签: linux bash shell docker interactive

我正在使用docker容器交互式shell在shell上执行命令。

e.g. docker exec -i docker_container_name sh

,然后在此交互式shell上启动命令。现在,如果我想杀死此交互式外壳并在其上运行命令,该怎么做?

我尝试将kill -9 shell_pid or kill -s 15 shell_pid信号发送到交互式外壳。但是,在这种情况下,交互式外壳程序被杀死,但是在交互式外壳程序上运行的命令一直到那里并成为孤立进程。

请让我知道如何使用在其上运行的命令杀死交互式shell。

1 个答案:

答案 0 :(得分:1)

在杀死外壳并杀死它们之前,您应该先让子进程进行处理

CPIDS=`pgrep -P $shellpid` # gets pids of child processes
kill -9 $shellpid
for cpid in $CPIDS ; do kill -9 $cpid ; done

或者(不是那么安全,因为如果在shell中运行一系列命令,则可能会在这两个kill命令之间调用下一个命令)

pkill -TERM -P $shellpid # sends TERMINATE signal to children
kill -9 $shellpid
相关问题