node app.js
Web サーバー、自動テスト、バックグラウンドでのコンパイルなど、複数のプロセスが実行されている開発スタックがあります。これらはすべて、またはなどの基本的なコマンド ライン コマンドlein midje :autotest
です。
1 つのスクリプトでこれらすべてのプロセスを「バックグラウンド」で実行し、それらの出力を 1 つの stdout にマージする(つまり、ターミナルの画面に表示する) ことは可能ですか?
私が見つけた (& を使用した) 簡単な bash ソリューションの問題の 1 つは、Ctrl+C でバックグラウンド プロセスが明らかに維持されていることであり、これは望ましくありません。
トラップを追加しようとしまし'kill $(jobs -pr)' SIGINT SIGTERM EXIT
たが、これは OS X では確実に機能しないようです。驚くべきことに、ノード プロセスは強制終了されますが、スクリプトが終了した後も Java プロセスは生き続けます (Ctrl+C を使用)。
どんなスクリプト言語でも使えます。私は純粋な bash または JS を好みますが、Python または Ruby も問題ありません。
また、マージされた出力で ANSI エスケープ カラーリングを維持したいと考えています。