単一端末で同時にコマンドを実行する方法

単一端末で同時にコマンドを実行する方法

この質問はどこかで答えを受けなければならないようですが、生涯見つけることができず、ただ尋ねます。

端末で2つのコマンドを同時に実行しようとしていますが、同時に実行する必要があり、両方のコマンドは進行中のフォアグラウンドコマンドでなければなりません。

どうすればいいですか?

例えば:

npm run serveそしてdocker-compose up

たとえば、単一のコマンドライン演算子を使用して複数の「終了/停止」コマンドを実行できることがわかります。&&または、;標準のシャットダウン操作||で単一のコマンドを使用して、同じ端末ウィンドウで両方のコマンドを同時に実行する必要があります。cntrl + c可能ですか?

答え1

シングルを使う&

command1 & command2 &

それぞれは次から始まります。背景

運が良ければ、2つのタスクを同時に実行することもできます。

parallel <<EOF
command1
command2
EOF

しかし、これは純粋な乱交ではありません。使用したばかりparallelと殺害したかどうかを確認しました。グループ、並列に開始された子プロセスを終了します。

kill -- -pid-of-parallel

したがって、並列プロセスのPIDが54の場合は、次のようにします。

kill -- -54

それでは効果があるでしょう。

答え2

同じ端末に同時に2つのフォアグラウンドプロセスを持つことはできませんが、複数のバックグラウンドプロセスを持つことができます。

他の回答で述べたように、それぞれバックグラウンドで実行される2つのプロセスを生成するbash one-linerを提供できます。
コマンド 1 & コマンド 2 &

両方のプロセスの出力は同じ端末に移動しますが、両方ともバックグラウンドにあるため、どちらかと対話できません。これらのいずれかと対話するには、 ' を使用して前景にインポートできます。パグ'。その後、バックグラウンドに戻すために使用できます。Ctrl+Zプログラムを一時停止してから背景'プログラムをバックグラウンドで実行し続けることを許可します。

使ってもいいそれらすべてを殺す'代わりにプロセスを終了するコマンドCtrl+Cこれらのプロセスがバックグラウンドにあるためです。または ' を使用することもできます。パグ'コマンドはプロセスを前景に戻してから使用できます。Ctrl+Cそれらを殺してしまう。

使用働く'コマンドを使用して、シェルで実行されているバックグラウンドプロセスを確認します。使ってもいい重量%'特定のタスクを前面にインポートします。

関連情報