CentOS7の運用と保守-プロセスとスケジュールされたタスク管理
プログラムとプロセスの関係
プログラム
- これは、静的に保存されたコード、実行可能コード、およびハードディスクやCDなどのメディアに保存されたデータの文字列です。
処理する
CPU
メモリ内およびメモリ内で実行されているプログラムコード- 動的に実行されるコード
- 親プロセスと子プロセスを分離する
- 各プログラムは1つ以上のプロセスを作成できます
- メインプロセスには複数の子プロセスが含まれる場合があります
プロセス情報の表示ps
静的プロセス統計を表示する
ps aux or -aux
#他们获取的内容一致 "-"可加可不加
ps -aux | wc -l
ps aux | wc -l
- a他のユーザープロセスを含む、端末上のすべてのプロセスを表示します
- uは、プロセスを一覧表示するユーザーを示します
- xすべての端末プロセスを表示
Linuxはマルチユーザーログインおよびマルチプロセスシステムです
各列の説明
USER
:プロセスのユーザーPID
: 進行中ID
%CPU
:プロセスが占めるCPU
割合%MEM
:占有メモリの割合VSZ
:プロセスで使用される仮想メモリの量[KB]RSS
:プロセスで使用される物理メモリの量[KB]TTY
:プロセスを開始した端末の名前。端末からプロセスを開始しない場合は、?と表示されます。
pts / 1は、リモートツール接続を表します
STAT
:旅程の状況D
:中断できないスリープ状態R
;:実行状態S
;:スリープ状態で起動可能;:T
停止状態、バックグラウンドで一時停止されているか、プロセスが追跡および
デバッグ状態にあるZ
;:ゾンビプロセス、プロセスは中止されましたが、一部プログラムのはまだメモリ内にありますSTART
:プロセスがトリガーされた時刻TIME
:プロセスの実際のCPU
実行時間COMMAND
:プロセスの開始コマンド
静的プロセス統計を表示する
ps -elf #必须加-否则显示不全
-e
システム内のすべてのプロセス情報を表示します-l
長いフォーマットを使用してプロセス情報を表示する-f
プロセス情報をフルフォーマットで表示する
各列の説明
F
:カーネルによってプロセスに割り当てられたシステムタグS
:プロセスのステータスUID
:これらのプロセスを開始したユーザーPID
:プロセスのプロセスID
PPID
:親プロセスのプロセス番号(プロセスが別のプロセスによって開始された場合)C
:プロセスのライフサイクルでのCPU
利用PRI
:プロセスの優先度(数値が大きいほど優先度は低くなります)NI
:謙虚な価値は優先順位の決定に参加するために使用されますADDR
:プロセスのメモリアドレスSZ
:プロセスがスワップアウトされる場合、必要なスワップスペースのおおよそのサイズWCHAN
:プロセスがスリープ状態の場合、スリープ状態のシステム関数の名前が表示されますSTIME
:プロセスが開始されたシステム時間TTY
:プロセス開始時の端末デバイスTIME
:プロセスの実行に必要な累積CPU
時間CMD
:プロセスの開始コマンド
ゾンビプロセス
- プロセスの親プロセスが最初に終了した場合、このプロセスはゾンビプロセスにはなりません。これは、各プロセスの終了時に、システムが現在のシステムで実行されているすべてのプログラムをスキャンして、の子であるプロセスがあるかどうかを確認するためです。終了したばかりのプロセス。そうである場合、Initが彼を引き継ぎます。子プロセスが終了した後、Initは関連するリソースを再利用します。
- 子プロセスが最初に終了すると、ゾンビプロセスになります
プロセスランキング情報の動的ビュートップ
最初の行はタスクキュー情報です
① 15:56:44
:システム時間
② up 3:54
:システム稼働時間
③ 2 user
:現在ログインしているユーザー数
④0.22, 0.08, 0.06
負荷平均::システム負荷、つまりシステムが単位時間に処理するタスク数、次の3つの値は1分、5分、および15分前から現在の平均まで
進捗情報の2行目
① Tasks
:プロセスの総数
② running
:実行中のプロセスの数
③ sleeping
:スリープ中のプロセスの数
④ stopped
:中止されたプロセスの数
⑤ zombie
:デッドプロセスの数
CPU情報の3行目
① us
:ユーザーが占有している
② sy
:カーネルが占めている
③ ni
:優先度スケジューリングが占有
④ id
:アイドルCPU
、アイドル理解するためにCPU
主に見るために、パーセンテージを%id
一部
⑤ wa
:I / O待ち占有
⑥ hi
:ハードウェア占有割り込み
⑦ si
:ソフトウエア割り込みが占有
⑧ st
:仮想化の占有率を
メモリ情報の4行目
① total
:合計メモリ容量
② free
:空きメモリ
③ used
:使用メモリ
④ buff/cache
:物理メモリとスワップメモリのバッファの合計
第5幕は宇宙情報を交換します
① total
:合計スワップスペース
② free
:空きスワップスペース
③ used
:使用済みスワップスペース
④ avail Mem
:使用可能な物理スペース
プロセス情報領域の各列の説明
PID
:プロセスIDUSER
:プロセス所有者のユーザー名PR
:優先度NI
:適度な程度の値。負の値は優先度が高いことを示し、正の値は優先度が低いことを示しますVIRT
:プロセスで使用される仮想メモリの合計量(KB単位)RES
:プロセスで使用される物理メモリのサイズ(KB単位)SHR
:共有メモリサイズ、単位kbS
:プロセスステータス%CPU
:最後の更新から現在CPU
までに費やされた時間の割合%MEM
:プロセスで使用された物理メモリの割合TIME+
:プロセスCPU
で使用された合計時間(1/100秒単位)COMMAND
:コマンド名/コマンドライン
一般的に使用される上位のコマンド
- Pキー:CPU使用率のパーセンテージに従ってソート
- Mキー:常駐メモリのサイズに従ってソート
- Nキー:開始時間に従ってソート
- cキー:表示コマンド名と完全なコマンドラインを切り替えます
- hキー:トッププログラムのオンラインヘルプ情報を取得する
- Kキー:プロンプトに従って指定されたプロセスのPID番号を入力し、Enterキーを押して対応するプロセスを終了します
- qキー:トッププログラムを終了します
- ナンバー1キー:CPUのナンバーとステータスを表示します
プロセス情報の表示pgrep
特定の条件に従ってプロセスPID情報を照会する
pgrep -l 进程关键字 #指定查看进程名
-l
プロセス名を表示する-U
特定のユーザーを指定する-t
指定ターミナル
プロセスツリーのpstreeを表示する
pstree -aup [用户名]
-a
:完全な情報を表示する-u
:対応するユーザー名を一覧表示します-p
:対応するPID番号を一覧表示します
ここではツールである頂上より多くの機能を持つトップと同様に、
#如何安装
yum install -y atop
プロセスの開始方法
手動スタート
- フォアグラウンドで開始:ユーザーがコマンドを入力すると、バイトがプログラムを実行します
- バックグラウンドで開始:コマンドラインの最後に
"&"
記号を追加[作業効率の向上]
例:外部ネットワークからソフトウェアをダウンロードする場合は、バックグラウンドでダウンロードします。
現時点では、待機のみ可能で、他の操作は実行できません
。バックグラウンドに切り替えた後は、いつでも他のコマンドを実行できます。
スケジュール開始
at
コマンドを使用して、1回限りのスケジュールされたタスクを設定しますcrontab
コマンドを使用して、定期的にスケジュールされたタスクを設定します
プロセスのフロントエンドとバックエンドのスケジューリング
Ctrl+z
現在のプログラムを一時停止する、つまりバックグラウンドに転送して実行を停止するための組み合わせキー
例:vim test.sh
次に実行Ctrl+z
jobs
コマンド
バックグラウンドでタスクのリストを表示する
例:jobs -l
オフにされたばかりのタスクを表示する
fg
コマンド
バックグラウンドプロセスをフォアグラウンドに復元するには、タスク番号を指定します。
例:fg 1
復元jobs
中にオフにされたタスクを確認できます。3108
プロセスの操作を終了します
ctrl+c
キーの組み合わせ
- 実行中のコマンドを中断します
kill、killall
コマンド
kill
指定されたPID番号のプロセスを終了するために使用されますkillall
指定された名前に関連するすべてのプロセスを終了するために使用されます-9
強制終了するオプション
指定されたプロセスtest.sh
を強制終了しますすべてのVIM
プロセスを強制終了します
でタスク管理を計画する
atは1回限りのスケジュールされたタスクです
at [HH:MM] [yyyy-mm-dd]
Ctrl+D
タスクの送信ボタンを押します
。次に例を示します。
スケジュールされたタスク管理crontab
あらかじめ設定した時間(分、時、日、月、週)に従って、ユーザーが指定したコマンド操作を繰り返します。
定期的にスケジュールされたタスクです
メイン設定ファイル
グローバル構成ファイル、ファイル内:/etc/crontab
システムデフォルト設定、ディレクトリ内:/etc/cron.*/
ユーザー定義設定、ファイル内:/var/spool/cron/用户名
crontabのスケジュールされたタスクを管理する
スケジュールされたタスクを編集する
crontab -e 【-u 用户名】
#-u缺省时默认当前用户
スケジュールされたタスクを表示する
crontab -l 【-u 用户名】
スケジュールされたタスクを削除する
crontab -r 【-u 用户名】
crontabタスク構成の形式
代表的な意味 | 分 | 時間 | 日付 | 月 | 週間 | コマンド |
---|---|---|---|---|---|---|
番号の範囲 | 0〜59 | 0〜23 | 1〜31 | 1〜12 | 0〜7 | 実行するコマンド |
週数が0または7の場合、「日曜日」を意味します
時間価値の特別な表現方法
*
範囲内の任意の時間を
,
表し、間隔内の複数の離散時点を
-
表し、連続時間範囲を
/
表し、間隔の時間頻度を表します
応用例
0 17 * * 1-5
#周一到周五每天17点
30 8 * * 1,3,5
#周一,周三,周五8.30
0 8-18/2 * * *
#8点到18点每两小时
0 * */3 * *
#每三天
crontab -e [-uroot]スケジュールされたタスクを編集します
- 毎分定期的にルールを実行する
每1分钟执行: */1 * * * *或者* * * * *
每5分钟执行: */5 * * * *
- 1時間ごとにルールを実行する
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * *
- ルールを1日1回定期的に実行する
每天执行 0 0 * * *
- 週に1回定期的にルールを実行する
每周执行 0 0 * * 0
- ルールを月に1回定期的に実行します。
每月执行 0 0 1 * *
- 年に1回定期的にルールを実行する
每年执行 0 0 1 1 *
その他の例
5 * * * * ls
#指定每小时的第5分钟执行一次ls命令
30 5 * * * ls
#指定每天的 5:30 执行ls命令
30 7 8 * * ls
#指定每月8号的7:30分执行ls命令
30 5 8 6 * ls
#指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls
#指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls
#每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls
#每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls
#每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls
#每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
方法2:
echo ‘30 7 * * 6 /usr/bin/systemctl httpd restart’ >> /var/spool/cron/root