檢視原始碼 mix cmd (Mix v1.16.2)

執行指定的命令。

例如,您可以呼叫外部命令,例如 make

$ mix cmd make

在命令前加上 --cd 旗標,您也可以強制命令在特定目錄中執行

$ mix cmd --cd "third-party" make

此任務在 umbrella 應用程式中也很有用,可以在每個子應用程式上執行命令

$ 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 模組文件中的「僵屍作業系統程序」中詳細討論了這個主題。