web-dev-qa-db-ja.com

開始GNUバックグラウンドで並列ですか?

GNUバックグラウンドで並列に開始することは可能ですか、それともどういうわけか、バックグラウンドに送信することは可能ですか?

parallelを同時に実行する2つのコマンドを使用できるようにこれを実行したいと思います。

そして、なぜ私は1つの並列コマンドですべてを実行しないのですか? 2つの理由:

  1. しばらくするとパラレルが遅くなり、
  2. すべてを停止せずに1つのグループの実行を停止できるように分離したいからです
1
Dominique

私はしばしば、いくつかの異なるタスクグループを並行して実行します。

parallel do_stuff ::: x y z

次に、do_stuffの実行に時間がかかり、ターミナルを元に戻したいので、CTRL-Zを押して次のように入力します。

bg

ジョブをバックグラウンドに配置します。

それから私は別の仕事を始めるかもしれません:

parallel do_other_stuff ::: foo bar baz

この新しいジョブは、do_stuffと並行して実行されます。

1
Ole Tange

バックグラウンドで並列実行することが可能です。最近、並行して実行する必要のある同様のスクリプトに取り組んでいて、 this answerで提案を受け取りました。私の答えの一部としてリンク 指定 にアクセスすると、以下の答えが表示されます。

GNU Parallelは、カウントセマフォとして機能します。これは、通常モードよりも遅く、効率が低くなります。

parallel --semaphoreのエイリアスはsemです。デフォルトでは、一度に1つのプログラムのみを実行できます(技術的にはミューテックスと呼ばれます)。プログラムはバックグラウンドで開始されます。すべての 'semを終了するには、--waitを使用します。

sem 'sleep 1; echo The first finished' &&
    echo The first is now running in the background &&
    sem 'sleep 1; echo The second finished' &&
    echo The second is now running in the background
  sem --wait

私が提供したリンクの例を見ると、あなたが探しているものを間違いなく見つけることができます。

1
Ramesh