Linuxプロセスとスケジュールされたタスク管理(9)
1.プロセスとスケジュールされたタスク管理
1.1手順とプロセスの関係
プログラム:
ハードディスク、CD-ROM、その他のメディア
に保存されている実行可能コードとデータ、静的に保存されているコード
プロセス:
CPUとメモリで
実行されるプログラムコード、動的に実行されるコード、
親プロセスと子プロセス、
各親プロセスは1つ以上のプロセスを作成できます。
1.2プロセス情報を表示する静的psコマンドpsauxおよびps-elf
Linuxシステムで最も一般的に使用されるプロセス表示ツールです。主に、現在実行中の各プロセスの完全な情報を含む静的スナップショットを表示するために使用されます。さまざまなコマンドオプションを使用してプロセス情報を選択的に表示できます。
実際の作業では、通常、実行中のプロセスを見つけてプログラムが開始されているかどうかを確認するために、grepなどのパイプシンボルが追加されます。
1.2.1 ps -aux(プロセス情報は単純なリスト形式で表示されます。「-」を書き込むこともできません):
各文字の意味は次のとおりです。
a:システム内のすべてのプロセスを表示します
u:指定されたユーザーを表します
x:すべての端末(tty端末、ps / 0リモート端末)でのユーザーのプロセス
1.ユーザー:ユーザー
2. PID:プロセス番号(ls -l | grep Init initのソフトリンクを見ることができます。1つのプロセスはinitです)
3。%CPU:プロセスのCPU占有率
4、%MEM:プロセスのメモリ占有率
5、VSZ:仮想メモリ占有率
6、RSS:物理メモリ占有率
7 、TTY:端末(?は不明、ほとんどがローカルを表します)
8。STAT:現在のプロセスステータス。ここで、「S」:スリーププロセスを中断できます。「D」:スリーププロセスを中断できません。「s」:親プロセス、 「<」:優先度が高い、「N」:優先度が低い、「R」:実行中のプロセス、「I」:マルチリニアプロセス、「Z」:ゾンビプロセス、「+」:フォアグラウンドプロセスを表します。
9、START:開始時間
10、TIME:プロセスがCPUを占有する合計時間
11。コマンド:プロセスの名前
1.2.2 ps -elf(システム内のプロセス情報を長い形式で表示します):
各文字の意味は次のとおりです
。e:現在のシステムのすべてのプロセス情報
l:プロセス情報を表示するために長い形式を
使用するf:プロセス情報を表示するために完全な形式を使用する
1. F:カーネルによってプロセスに割り当てられたシステムタグ
2. S:PID:プロセスのプロセスID。
3. UID:これらのプロセスを開始したユーザー。
4. PID:プロセスのプロセスID
5. PPID:現在のプロセスの親プロセス
6. C:プロセスのライフサイクルにおけるCPU使用率
7. PIR:ユーザーモード(人的介入の量)優先度
8。 NI:カーネルモード優先度(-20〜19 、値が小さいほど優先度が高い)9。ADDR:
-実行中の
10を
表します。SZ:スワップ交換パーティション11の容量を占有します。WCHAN:現在のプロセスの名前カーネル状態
12。CMD:コマンドの名前
1.2.3ゾンビプロセス
プロセスは終了しますが、プロセスの親プロセスが最初に終了した場合、プロセスはゾンビプロセスにはなりません。各プロセスが終了すると、システムは現在のシステムで実行されているすべてのプロセスをスキャンして、プロセスがあるかどうかを確認するためです。プロセスは、終了したばかりのプロセスの子プロセスではありません。終了した場合、Initはそれを引き継ぎ、その親プロセスになります。子プロセスが終了すると、initは占有していた関連リソースを再利用します。
ただし、子プロセスが親プロセスの前に終了し、親プロセスが子プロセスを再利用せず、子プロセスが占有していたリソースを解放しない場合、この時点で子プロセスはゾンビプロセスになります。
ゾンビプロセスを殺す方法は?
killコマンドでゾンビプロセスを強制終了することはできませんが、ゾンビプロセスの父を強制終了できます。ゾンビパパがハングした後、ゾンビプロセスは孤立プロセスになります。孤立プロセスはシステムリソースを占有せず、 initプログラム。initプログラムはそれをリサイクルします。
1.すべてのR関連プロセスを
表示します2.
ゾンビプロセスの親プロセスを表示します3.ゾンビプロセスに対応する親プロセスを
強制終了します4.ゾンビプロセスがリサイクルされます
1.3プロセスランキング情報を表示するダイナミックトップコマンド
1.3.1トップコマンド:
topに入ると、動的に表示できます
。P:CPU使用率に
応じて並べ替えM:常駐メモリのサイズに
応じて並べ替えN:起動時間に応じて並べ替え
c:コマンド名と完全なコマンドラインを表示するように切り替えます
h:プログラムのトップオンラインヘルプ情報を取得します
k:プロンプトに従って指定されたプロセスのPID番号を入力し、Enterキーを押して対応するプロセスを終了します
q:
CPUの番号とステータスを終了します1:の番号とステータスを表示しますCPU
次の図に示すように、
赤いボックス内の5行のコンテンツそれぞれ:
最初の行はタスクキュー情報です。
- 15:19:46は、現時点でのシステム時刻を表します
- 6:09までは、システムが時々実行されていることを意味します
- 1ユーザー現在ログインしているユーザーの数
- 負荷平均0.000.01 0.05システム負荷、つまり、単位時間内にシステムによって処理されるタスクブック、次の3つの値は、1分、5分、および15分前から現在までの平均値です。
進捗情報の2行目
- タスクのプロセスの総数
- running実行中のプロセスの数
- スリーププロセスの数
- 停止したプロセスの数
- ゾンビゾンビプロセスの数
CPU情報の3行目
- 私たちユーザーが占有
- syカーネルが占有
- ni優先スケジューリングの職業
- idアイドルCPU、アイドルCPUの割合を理解するには、主に%idの重要な部分に依存します
- wa I/o等待占用
- こんにちはハードウェア割り込みの職業
- siソフトウェア割り込みの職業
- st仮想化占有率
メモリ情報の4行目
- 合計合計メモリスペース
- 空き空きメモリ
- 使用済み使用済みメモリ
- buff / cache物理メモリとスワップメモリのバッファの合計
5行目はスペース情報を交換します
- 合計スワップスペース
- 無料の無料スワップスペース
- 使用済みスワップスペース
- memの利用可能な物理スペースを利用する
1.4pgrepコマンド
特定の条件に従ってプロセスPID情報を照会する
1.pgrep -l "xxx"
-l:プロセス名を表示します。デフォルトではPID番号のみが出力されます
-U:特定のユーザーを指定します
-t:端末を指定します
ここでxshellでvimを実行して、ens33ネットワークカードの変更を入力します
別のセッションを開き、pgrep -l''vim ''およびpgrep''vim ''と入力すると、次のような結果が得られます。-
lを追加すると、プロセスのコマンド名が表示されることがわかります。
1.5プロセスツリーのpstreeを表示する
pstreeコマンド-ツリー構造でプロセス情報を一覧表示します
pstree-aup
-a:完全な情報を表示します
-u:
対応するユーザー名を一覧表示します-p:対応するPIDを一覧表示します
2.プロセスの開始方法
2.1手動スタート
- フォアグラウンドで開始:ユーザーがコマンドを入力し、プログラムを直接実行します。これが
現在のコマンドの使用方法です。 - バックグラウンドプログラム:コマンドラインの最後に「&」記号を追加します。&を追加した
後、コマンドは継続操作に影響を与えることなくバックグラウンドで実行し続けることができます。
ここで、比較的大きな画像ファイルを直接コピーする場合は、比較的大きくてすぐに完成できないため、長時間操作できないため、直接実行します。
そのため、現時点では、コピー画像ファイルをバックグラウンドで処理するため、使用効率が大幅に向上しています。
2.2プロセスのフロントおよびバックグラウンドスケジューリング:
2.2.1 Crtl + Zキーの組み合わせ
現在のプロセスを一時停止します。つまり、バックグラウンドに転送して実行を停止します
2.2.2ジョブ[-l]
バックグラウンドでタスクのリストを表示する
2.2.3fgコマンド
バックグラウンドプロセスをフォアグラウンドに復元するには、タスク番号を指定します。
ここでは、copy cpコマンドを使用して大きな画像ファイルをコピーし、実験を一時停止して再開します。
- cp / dev / cdrom myrain.iso
ここで、cdromイメージファイルをmyrain.isoにコピーします。 - Ctrlキーを押しながらZキーを押してハングアップします
- jobs -lと入力し
て現在のプロセスを確認し、cpタスクが停止したことを確認します - fg 1と入力して、1というラベルの付いた現在のプロセスを復元する
と、cpタスクが再び続行されることがわかります。
2.3プロセスの操作を終了します
2.3.1 Ctrl + Cキーの組み合わせ
- 実行中のコマンドを中断します
2.3.2 kill、killallコマンド
- killは、指定されたPID番号でプロセスを終了するために使用されます
- killallは、指定された名前に関連するすべてのプロセスを終了するために使用されます
- -9オプションは強制終了に使用されます
ここでは、2つのプロセスを強制的に強制終了します。
2.3.3pkillコマンド
- 特定の条件に基づいてプロセスを終了します
- 一般的なコマンドオプション
-U:プロセスが属するユーザー名に従って対応するプロセスを終了します
-t:プロセスが配置されている端末に従って対応するプロセスを終了します
2.4スケジューリング開始
2.4.1atコマンドの使用
1回限りのスケジュールされたタスクを設定する
at [HH:MM] [yyyy-mm-dd](这里“[ ]”如果不加的话默认用当前时间。)
atq:查看当前所有未执行的at任务
atrm + atq中对应的编号 :表示删除对应的at任务
タイミングタスクの2つを次に
示します。1。2020-11-3119:50のルート関連プロセスの数をファイルps.rootに上書きし(記号 ">"を使用して上書きを示します)、cat / tmp /を渡します。 ps.rootは、結果1が156プロセス
2の数であることを確認できます。ディレクトリは19:51に作成され、これも表示できます。
以下は、atqおよびatrmの指示を示しています
2.4.2 crontabコマンド、定期的にスケジュールされたタスクを設定します
crontabコマンド
●事前設定された期間(分、時、日、月、週)に従って
ユーザー指定のコマンド操作を繰り返し
ます
●定期的にスケジュールされたタスクです●メイン構成ファイル
◆グローバル構成ファイル。ファイル内にあります:/ etc / crontab
◆システムのデフォルト設定は次のディレクトリ
にあります:/ etc / cron。* /◆ユーザー定義の設定は次のファイルにあります:/ varlspool / cron / user name
コマンド:
crontab -e [-u user name] -----スケジュールされたタスクの編集
-uはデフォルトで現在のユーザーにデフォルト設定されます
crontab -l [-u username] ------スケジュールされたタスクを表示する
crontab -r [-u username] -------スケジュールされたタスクを削除します
crontabタスク構成の形式
フィールド | 説明 |
---|---|
分 | 0〜59分の任意の整数 |
時間 | 0〜23時間の任意の整数 |
日付 | 1〜31日の任意の整数 |
月 | 1から12月までの任意の整数 |
週間 | 0〜7、0、7の間の整数は、どちらも日曜日を表します |
コマンド | コマンドまたはプログラムスクリプトを実行する必要があります |
2.4.3時間価値の特別な表現方法
●*は範囲内の任意の時間を示します
●、間隔内の複数の離散時間ポイントを
示します●-連続した時間範囲を示します
●/指定された間隔の時間頻度
例:
0 17 * * 1-5
は毎週月曜日から金曜日17を示します: 00
50 10 * *
2、3、5は、毎週火曜日、水曜日、金曜日の10:50
18 9 * / 4 * / 2 *
は、2か月ごとに9時に4日ごとに18ポイント
0 **を意味します。/ 2 * *
意味:2日ごとに実行
ここでの>>は追加を意味し、上書きする代わりに2行目に配置されます。