View Source mix cmd (Mix v1.17.2)
Executes the given command.
For example, you can invoke an external command such as make:
$ mix cmd make
By passing the --cd
flag before the command, you can also force
the command to run in a specific directory:
$ mix cmd --cd "third-party" make
This task is also useful in umbrella applications to execute a command on each child app:
$ mix cmd pwd
You can limit which apps the cmd runs in by using mix do
with the --app
option:
$ mix do --app app1 --app app2 cmd pwd
The tasks aborts whenever a command exits with a non-zero status.
This task is automatically re-enabled, so it can be called multiple times with different arguments.
Command line options
--app
- limit running the command to the given app. This option is currently deprecated in favor ofmix do --app
--cd
(since v1.10.4) - the directory to run the command in
Zombie operating system processes
Beware that the Erlang VM does not terminate child processes
when it shuts down. Therefore, if you use mix cmd
to start
long running processes and then shut down the VM, it is likely
that those child processes won't be terminated with the VM.
A solution is to make sure the child processes listen to the
standard input and terminate when standard input is closed.
We discuss this topic at length in the "Zombie operating system processes"
of the Port
module documentation.