20241007
20241007
ふと思った
Bashシェルのジョブのconcurrencyを、実際にジョブとして実行してしまった後に調整できるか? Bashシェルにはジョブコントロールが備わっており、コマンドの末尾に&を付けることでコマンド実行をディスパッチすることができます。
質問です。
実際にジョブとして実行してしまった後に並列実行数を調整できるのでしょうか?
Bashシェルには、ジョブコントロール機能を使ってバックグラウンドジョブの管理が可能ですが、実行中のジョブの並列実行数を直接調整することは標準的なシェル機能では提供されていません。
ただし、実行中のジョブの数を管理・調整するためのいくつかのアプローチがあります。
(アプローチ方法が続く)
アプローチ4: 既存のジョブに対する kill コマンドを使った制御
もし既にバックグラウンドで実行されているジョブがあり、並列実行数を「後から調整」する必要がある場合、手動でジョブを一時停止(SIGSTOP)または再開(SIGCONT)して並列数を制御することが可能です。
# ジョブを一時停止
kill -STOP <ジョブのPID>
# ジョブを再開
kill -CONT <ジョブのPID>
kill -STOP と kill -CONT で手動でジョブを一時停止・再開する方法しかないっぽい