繁体   English   中英

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

[英]How to kill interactive shell and process/jobs running on it?

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

e.g. docker exec -i docker_container_name sh

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

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

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

您应该先获取子(ren)进程,然后再杀死外壳并杀死它们

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM