ubuntu - shell 命令是如何执行的,它们在什么上下文中运行?
问题描述
在 golang http 应用服务器中,golang 有 CPU 线程可供使用,它创建 go 例程来响应 http 请求和响应。
因此,如果我的应用程序每秒收到 100 个请求,golang 会处理得很好。
现在说对于每个 http 请求,我正在制作一个 shell 命令来执行命令行参数。
这个过程是如何处理的?
我想了解从 Web 应用程序执行 shell 命令时如何管理它们,以及是否有一些线程模型来管理这些命令的执行过程。
解决方案
问: “[有] 一些线程模型来管理这些命令的执行过程吗?”
答:没有。
如果你生成一个 shell(不管它是一个 Apache CGI 处理程序、一个popen()、命令行 ... 还是一个 goroutine),你就会生成一个新的 shell 进程。
更糟糕的是,一个 shell 脚本通常会产生许多其他shell 子进程。
此外,如果您有一个面向 Internet 的网站,则生成 *nix shell 以响应 Web 请求可能会带来巨大的安全风险。
推荐阅读
- python - Airflow 中 Python Operator 中 execution_timeout 的默认值
- python - API 在浏览器中有效,但在 python 中无效
- mongodb - NiFi 的“运行 Mongo 聚合”显示 JSONMappingException:无法识别的令牌 ISODate
- c - while ((ch = getchar()) != EOF) 或提前声明 int ch = getchar()
- c# - Bouncy Castle - Diffie Hellman Secrets 不匹配
- javascript - 提交到 Google 电子表格浏览器兼容性
- python - 提高循环数学脚本的效率
- apache-kafka - Kafka 在尝试访问磁盘上的日志文件时抛出异常磁盘错误
- php - 如何从模态html中的输入中获取数据?
- ios - 如何处理对 UI 来说太快的更新?