gpt4 book ai didi

linux - 如何杀死交互式 shell 和在其上运行的进程/作业?

转载 作者:太空狗 更新时间:2023-10-29 12:22:50 24 4
gpt4 key购买 nike

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

e.g. docker exec -i docker_container_name sh

然后我在这个交互式 shell 上启动命令。现在,如果我想终止在其上运行的这个交互式 shell 和命令,该怎么做?

我尝试向交互式 shell 发送 kill -9 shell_pid 或 kill -s 15 shell_pid 信号。然而,在这种情况下,交互式 shell 被杀死,但在交互式 shell 上运行的命令一直存在并成为孤儿进程。

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

最佳答案

你应该先获取子进程,然后再杀死 shell 并杀死它们

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

关于linux - 如何杀死交互式 shell 和在其上运行的进程/作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com