バックグラウンドプロセスにジョブ番号を手動で割り当てる

バックグラウンドプロセスにジョブ番号を手動で割り当てる

2つのタスクをバックグラウンドで送信するとしましょう。

$ sleep 77 &
$ sleep 99 &

それから私は私の仕事をチェックします

$ jobs
> [1]  - running    sleep 77
> [2]  + running    sleep 99

この役職に割り当てられた職務番号を制御できますか?ここで正しい用語を使用しているかどうかはわかりません。[1]前の例では、合計で示された数字について話しています。[2]

ユースケースは次のとおりです。資格情報を随時更新する作業が必要ですが、ほとんどの場合は休止状態です。呼び出されると、自動的にバックグラウンドで送信する関数を作成しました。プロセスを制御したかったので意図的にこうしました。つまり、明らかにこれが職業であることを望んでいた。

関数を呼び出したが他の操作がない場合は、ジョブ番号を取得してください[2]。 ([1]関数を呼び出すサブプロセスであると仮定します。)後でjob1バックグラウンドで送信すると、job numberはインポートされますが、[1]job job2numberはインポートされないため、これは混乱します[3]。私は睡眠機能にこのように大きな数字を手動で割り当てることができればと思いました[99]。これは可能でしょうか?またはbashzsh

ベストアンサー1

いいえ。バックグラウンドプロセスに割り当てられたジョブ番号を指定できません。

ただし、最新のバックグラウンドプロセスのPIDを取得できるため、はるかに$!便利です。

例えば

$ sleep 77 &
[5] 21959
$ job1=$!

$ sleep 99 &
[6] 21960
$ job2=$!

$ echo job1=$job1 job2=$job2
job1=21959 job2=21960

その後、(最初の作業が完了する前に):

$ kill "$job1"
[1]-  Terminated              sleep 77

バックグラウンドタスクの詳細を表示してman bash検索してください。JOB CONTROL

(注:ジョブコントロールはすべてのボーンスタイルシェルでほぼ同じです。ただし、bashこれに関する最高のマニュアルページのドキュメントは次のとおりです。)

おすすめ記事