バックグラウンドでGNU Parallelを起動するか、どういうわけかバックグラウンドで送信できますか?
parallel
同時に2つのコマンドを実行できるようにこれを実行したいと思います。
1つの並列コマンドですべての操作を実行しないのはなぜですか? 2つの理由:
- 並列速度はしばらくすると遅くなり、
- すべてを中断せずに1グループの実行を中断できるように分離したいからです。
答え1
バックグラウンドで並列に実行できます。最近、私は並行して実行する必要がある同様のスクリプトを作業しており、次のアドバイスを受けました。これ答え。リンクに乗ると指定済み私の回答の一部として、次の回答が表示されます。
GNU Parallel は計算セマフォとして使用できます。これは通常モードより遅く、効率が悪い。
のエイリアスparallel --semaphore
はですsem
。デフォルト設定は、一度に1つのプログラムのみを実行することを許可することです(技術的にはミューテックスと呼ばれます)。プログラムはバックグラウンドで始まります。--wait
すべての「sem」を完了するには:
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
私が提供したリンクの例を見ると、あなたが望むものを見つけることができます。
答え2
私はしばしば複数の異なるワークグループを並列に実行します。
parallel do_stuff ::: x y z
その後、このタスクを実行するのに時間がかかることに気づき、do_stuff
端末を復元したいので、CTRL-Zを押して次のように入力しました。
bg
タスクをバックグラウンドに置きます。
これで別のことを始めることもできます。
parallel do_other_stuff ::: foo bar baz
今回の新作はと一緒ですdo_stuff
。