查看源代码 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 模块文档的“僵尸操作系统进程”中详细讨论此主题。