パーセント記号と kill コマンドを使用してジョブを停止するのは混乱しています。 kill のマニュアルページでパーセント記号が使用可能であることを示す文書が見つかりません。この説明が他の場所に隠されているか、または%
このフラグが使用される理由を誰かが私に説明できますか?
kill -s 19 %1
IDが1のジョブが停止します。
答え1
この%
ロゴは作業仕様。簡単に言えば、タスクはシェルによって開始され、フォアグラウンドで実行されている(そうであればシェルと対話することはできません)、バックグラウンドで実行中、一時停止、またはシャットダウンできるプロセスです(シェルはそうではありません)。まだ気づいていない場合、作業は消えます。)
%1
シェルの作業テーブル内の最初の項目の操作を表します。異なるシェル・インスタンスのジョブ番号は関係がなく、プロセス ID とも関係ありません。このjobs
コマンドを使用して、このシェルのタスクのリストを表示できます。ジョブを操作するのに役立つ他のコマンドには、ジョブをそれぞれ前景または背景に移動することがfg
あります。bg
ジョブを操作するもう1つの方法は、Ctrl+を押してZフォアグラウンドジョブを一時停止し、&
最後にコマンドを実行してバックグラウンドに直接送信することです。
スタンドアロンユーティリティがあり、kill
というシェル組み込みコマンドがありますkill
。このコマンドは別のユーティリティとして存在するため、シェルを起動せずに他のプログラムから呼び出すことができます。このコマンドはシェル組み込みとして存在するため、プロセスを開始するためのリソースが不足しても呼び出すことができ、kill
シェルの内部データ構造を理解します。
操作は内部シェルデータ構造なので、外部kill
コマンドはそれを認識しません。外部コマンドはマニュアルページに文書化されています。タスク関連機能のドキュメントを見つけるには、kill
シェルのドキュメントを確認してください。強く打つまたは扱いにくい。次に、操作に関するセクションを参照してください。強く打つ、扱いにくい。シェルマニュアルにはjobs
、fg
およびコマンドも文書化されていますbg
。
答え2
シェルでアクションを参照する方法はいくつかあります。 %文字はジョブ仕様(jobspec)を表します。ジョブ番号nは%nと呼ぶことができます。ジョブの開始に使用された名前のプレフィックスを使用するか、そのコマンドラインに表示されるサブストリングを使用してジョブを参照することもできます。単にジョブ名を指定して前景にインポートします。 %1 は "fg %1" と同義語で、タスク 1 を背景から前景に取得します。同様に、「%1&」は「bg%1」と同じようにバックグラウンドでタスク1を再開します。
答え3
[root@typhoon ~]# jobs
[3]+ Stopped sleep 3000
[5]- Stopped sleep 1001
[6] Running sleep 9922 &
[root@typhoon ~]# /bin/kill %5
kill: cannot find process "%5"
[root@typhoon ~]# kill %5
[root@typhoon ~]#