查看源代码 mix cmd (Mix v1.16.2)
执行给定的命令。
例如,您可以调用外部命令,例如 make
$ mix cmd make
通过在命令之前传递 --cd
标志,您还可以强制命令在特定目录中运行
$ mix cmd --cd "third-party" make
此任务在伞形应用程序中也很有用,可以在每个子应用程序上执行命令
$ mix cmd pwd
您可以使用 mix do
以及 --app
选项来限制 cmd 在哪些应用程序中运行
$ mix do --app app1 --app app2 cmd pwd
只要命令以非零状态退出,该任务就会中止。
此任务会自动重新启用,因此可以使用不同的参数多次调用它。
命令行选项
--app
- 将命令的运行限制在给定的应用程序中。此选项目前已被mix do --app
弃用--cd
- (从 v1.10.4 开始) 在其中运行命令的目录
僵尸操作系统进程
请注意,Erlang VM 在关闭时不会终止子进程。因此,如果您使用 mix cmd
启动长时间运行的进程,然后关闭 VM,这些子进程很可能不会与 VM 一起终止。
一种解决方案是确保子进程监听标准输入,并在标准输入关闭时终止。我们将在 Port
模块文档的“僵尸操作系统进程”中详细讨论此主题。