& returns 与 docker exec 一起使用时不正确的 pid
& returns incorrect pid when used with docker exec
我目前正在尝试使用 nohup
命令生成和终止 hyperledger composer rest 服务器实例。
为了生成新的 hyperledger composer rest 服务器实例,我需要在 docker cli 容器中执行此类命令。
我现在是这样做的:
# start an interactive terminal with cli container
docker exec -it cli bash
# start rest server with defined port number
nohup composer-rest-server -c <myCard> -p <myPort> &
这将为我 return 一个与其余服务器的进程 ID 相关的 pid。
但是,如果我这样做,
# run a process that is detached to start the rest server
docker exec -d cli composer-rest-server -c <myCard> -p <myPort> &
rest 服务器将启动,但是,returned 的 pid 是不是rest 服务器的 pid。
为什么会这样?
PS: 我需要 pid 来稍后杀死生成的其余服务器。
在你的第二个命令中,结尾 &
作用于 docker exec
本身,而不作用于容器内的进程 运行ning。
既然你有 运行 带有 -d
选项的分离模式的容器,为什么还要将其余服务器置于后台?
我目前正在尝试使用 nohup
命令生成和终止 hyperledger composer rest 服务器实例。
为了生成新的 hyperledger composer rest 服务器实例,我需要在 docker cli 容器中执行此类命令。 我现在是这样做的:
# start an interactive terminal with cli container
docker exec -it cli bash
# start rest server with defined port number
nohup composer-rest-server -c <myCard> -p <myPort> &
这将为我 return 一个与其余服务器的进程 ID 相关的 pid。
但是,如果我这样做,
# run a process that is detached to start the rest server
docker exec -d cli composer-rest-server -c <myCard> -p <myPort> &
rest 服务器将启动,但是,returned 的 pid 是不是rest 服务器的 pid。
为什么会这样?
PS: 我需要 pid 来稍后杀死生成的其余服务器。
在你的第二个命令中,结尾 &
作用于 docker exec
本身,而不作用于容器内的进程 运行ning。
既然你有 运行 带有 -d
选项的分离模式的容器,为什么还要将其余服务器置于后台?