首页 > 解决方案 > shell 命令是如何执行的,它们在什么上下文中运行?

问题描述

在 golang http 应用服务器中,golang 有 CPU 线程可供使用,它创建 go 例程来响应 http 请求和响应。

因此,如果我的应用程序每秒收到 100 个请求,golang 会处理得很好。

现在说对于每个 http 请求,我正在制作一个 shell 命令来执行命令行参数。

这个过程是如何处理的?

我想了解从 Web 应用程序执行 shell 命令时如何管理它们,以及是否有一些线程模型来管理这些命令的执行过程。

标签: ubuntugo

解决方案


问: “[有] 一些线程模型来管理这些命令的执行过程吗?”

答:没有

如果你生成一个 shell(不管它是一个 Apache CGI 处理程序、一个popen()、命令行 ... 还是一个 goroutine),你就会生成一个新的 shell 进程。

更糟糕的是,一个 shell 脚本通常会产生许多其他shell 子进程。

此外,如果您有一个面向 Internet 的网站,则生成 *nix shell 以响应 Web 请求可能会带来巨大的安全风险。


推荐阅读