2つのタスクをバックグラウンドで送信するとしましょう。
$ sleep 77 &
$ sleep 99 &
それから私は私の仕事をチェックします
$ jobs
> [1] - running sleep 77
> [2] + running sleep 99
この役職に割り当てられた職務番号を制御できますか?ここで正しい用語を使用しているかどうかはわかりません。[1]
前の例では、合計で示された数字について話しています。[2]
ユースケースは次のとおりです。資格情報を随時更新する作業が必要ですが、ほとんどの場合は休止状態です。呼び出されると、自動的にバックグラウンドで送信する関数を作成しました。プロセスを制御したかったので意図的にこうしました。つまり、明らかにこれが職業であることを望んでいた。
関数を呼び出したが他の操作がない場合は、ジョブ番号を取得してください[2]
。 ([1]
関数を呼び出すサブプロセスであると仮定します。)後でjob1
バックグラウンドで送信すると、job numberはインポートされますが、[1]
job job2
numberはインポートされないため、これは混乱します[3]
。私は睡眠機能にこのように大きな数字を手動で割り当てることができればと思いました[99]
。これは可能でしょうか?またはbash
?zsh
答え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
これに関する最高のマニュアルページのドキュメントは次のとおりです。)