プロセスは、開始された実行可能プログラムの実行中のインスタンスです。プロセスには、次のコンポーネントがあります。
**1.1****割り当てられたメモリのアドレススペース; **
1.2****所有権の資格情報や特権などのセキュリティ属性
**1.3****プログラムコードの実行の1つ以上のスレッド; **
1.4****プロセスステータス
**プログラム:**バイナリファイル、静的/ bin / date、/ usr / sbin / httpd、/ usr / sbin / sshd、/ usr / local / nginx / sbin / nginx。
**プロセス:**は、ライフサイクルと実行ステータスを備えた、動的なプログラム実行のプロセスです。
次のように説明されています:
親プロセスは、独自のアドレススペース(フォーク** [fɔ:k] **フォーク)をコピーして、新しい(子)プロセス構造を作成します。新しいプロセスにはそれぞれ、セキュリティの追跡のニーズを満たすために一意のプロセスID(PID)が割り当てられます。 PIDと親プロセスID(PPID)は、子プロセス環境の要素です。どのプロセスでも子プロセスを作成でき、すべてのプロセスは最初のシステムプロセスの子孫です。
centos5または6のPID1のプロセスは次のとおりです。 init
centos7のPID1のプロセスは次のとおりです。 systemd
**ゾンビプロセス:**プロセスはフォークを使用して子プロセスを作成します。子プロセスが終了し、親プロセスが子プロセスのステータス情報を取得するためにwaitまたはwaitpidを呼び出さない場合、子プロセスのプロセス記述子は引き続きシステムに保存されます。この種のプロセスはゾンビプロセスと呼ばれます。
****を自分の言葉で表現します。親プロセスが終了し、子プロセスが終了しない場合、これらの子プロセスは親プロセスによって管理されず、ゾンビプロセスになります。
**プロセスID(PID):**はプロセスを区別するために使用される一意の値です
親プロセスのID(PPID)
**ユーザーID **(UID)およびプロセスが属するグループ(GID)
**プロセスステータス:**ステータスは、実行中のR、スリープ中のS、ゾンビZに分けられます。
プロセス実行の優先順位
プロセスが接続されている端末の名前
**プロセスリソースの占有:**占有されているリソースのサイズ(メモリ、CPU使用率)など
**a:**現在の端末に関連付けられているすべてのプロセスを表示します
**u:**ユーザーフォーマットに基づいて表示( U:ユーザーIDのすべてのプロセスを表示)
**x:**端末で区別されずにすべてのプロセスを表示します
[ root@docker-01~]# ps -aux|more ##BSDフォーマットを使用してプロセスを表示します
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 10.00.01281486684?Ss Nov 010:09/usr/lib/syste
md/systemd --switched-root--system--deserialize22
root 20.00.000?S010年11月:00[kthreadd]
root 30.00.000?S010年11月:00[ksoftirqd/0]
root 50.00.000? S<010年11月:00[kworker/0:0H]
root 60.00.000?S010年11月:00[kworker/u8:0]
root 70.00.000?S010年11月:00[migration/0]
root 80.00.000?S010年11月:00[rcu_bh]
root 90.00.000?S010年11月:12[rcu_sched]
root 100.00.000? S<010年11月:00[lru-add-drain
## 含まれる情報は次のとおりです
USER:プロセスを実行しているユーザー
PID:プロセスID
%CPU:CPU使用率
%MEM:メモリ使用量
VSZ:仮想メモリを占有する
RSS:実メモリ常駐メモリを占有します
TTY:プロセスが実行される端末
STAT:プロセスステータスman ps(/STATE)
Rラン
Sは睡眠を中断することができます睡眠
D途切れない睡眠
Tはプロセスを停止しました
Zゾンビプロセス
Xデッドプロセス
Ssのプロセスリーダー、親プロセス
S<<優先度の高いプロセス
優先度の低いSNSプロセス
R++フォアグラウンドのプロセスグループを表します
Slはスレッドとして実行されます
START:プロセス開始時間
時間:プロセスがCPUを占有する合計時間
コマンド:プロセスファイル、プロセス名
[ root@docker-01~]# ps -ef|head ##進行状況を標準形式で表示することです
UID PID PPID C STIME TTY TIME CMD
ルート100Nov 01?00:00:09/usr/lib/systemd/systemd --switched-root--system--deserialize22
ルート2001Jan01?00:00:00[kthreadd]
ルート320110101?00:00:00[ksoftirqd/0]
ルート520110101?00:00:00[kworker/0:0H]
ルート6 2011年1月1日?00:00:00[kworker/u8:0]
ルート7 2011年1月1日?00:00:00[migration/0]
ルート820110101?00:00:00[rcu_bh]
ルート9201101 01?00:00:12[rcu_sched]
ルート10201101 01?00:00:00[lru-add-drain]
## 含まれる情報は次のとおりです
UID:これらのプロセスを開始したユーザー
PID:プロセスのID
PPID:親プロセスのプロセスID
C:プロセスのライフサイクルにおけるCPU使用率
STIME:プロセスが開始されたシステム時間
TTY:プロセスが実行されている端末デバイスを示します。それが表示された場合?端末とは何の関係もないことを示します。この種のプロセスは通常、カーネルモードプロセスです。さらに、tty1-tty6は、ptsの場合、このマシンのログインプログラムです。/0などの場合、仮想端末で実行されているプロセスを意味します。
TIME:実行中のプロセスが占める合計CPU時間
CMD:開始したプログラムの名前
[ root@docker-01~]# ps aux --sort %cpu |less ##ソート昇順
[ root@docker-01~]# ps aux --sort -%cpu |less ##降順で並べ替え
[ root@docker-01~]# ps aux --sort rss |less
[ root@docker-01~]# ps aux --sort -rss |less
[ root@docker-01~]# tar -zcvf usr-tar.gz /usr/
### 次に、Sによって別の端末でステータスを確認し続けます+,R+Dになる+[root@docker-01~]# ps -axu|grep tar
root 254263.80.0123688 1552pts/0 R+10:310:01 tar -zcvfusr-tar.gz /usr/
root 254470.00.0112724 984pts/1 S+10:310:00 grep--color=auto tar
root 254263.80.0123688 1552pts/0 D+10:310:01 tar -zcvfusr-tar.gz /usr/
root 254470.00.0112724 984pts/1 S+10:310:00 grep--color=auto tar
[ root@docker-01~]# top
top-10:48:16 up 1day,18:41, 2users, load average:0.00,0.04,0.08
Tasks: 111total, 2running, 109sleeping, 0stopped, 0zombie
%Cpu(s):0.1 us,0.1 sy,0.0 ni,99.8 id,0.0 wa,0.0 hi,0.0 si,0.0
KiB Mem : 16266520total, 11269388free, 2162204used, 2834928buff/cache
KiB Swap: 2097148total, 2097148free, 0used. 13687952avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND
17427 kibana 20025151641.3g 10324S 0.78.39:05.29 node
17255 elastic+2004713976308280 15708S 0.31.911:09.30 java
[ root@localhost ~]# top
top-10:51:24 up 61days,23:00, 2users, load average:46.56,48.38,34.85
Tasks: 267total, 1running, 266sleeping, 0stopped, 0zombie
Cpu(s):96.9%us,1.6%sy,0.0%ni,0.3%id,0.0%wa,0.5%hi,0.5%si,0.2%st
Mem: 71545156k total, 71079896k used, 465260k free, 58836k buffers
Swap: 2097148k total, 0k used, 2097148k free, 18012268k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND
13073 smgadmin 20 05451m 1.4g 21m S 130.52.0184:57.92 java
30753 smgadmin 20 04801m 1.3g 21m S 92.72.020:14.24 java
## java(ダーティカウの脆弱性、特権のエスカレーションに使用)プロセスが130を使用していることがわかります.5%
注意
4コアのcpuを使用している場合は、400%実行できます。
[ root@docker-01~]# yum install lsof
[ root@docker-01~]# vim a.txt
[ root@docker-01~]# ps -axu | grep a.txt
root 255260.00.0151532 5200pts/0 S+10:550:00 vima.txt
root 255600.00.0112724 1004pts/1 S+10:570:00 grep--color=auto a.txt
[ root@docker-01~]# lsof -p 25526 ##通常、どのファイルが読み取られているかを示すために使用されます。
[ root@docker-01~]# lsof -i :22 ##ポートを表示するため、またはハッカーによって開かれたバックドアポートを使用しているプロセスを表示するために使用されます
各CPU(またはCPUコア)は一度に1つのプロセスしか処理できません。タイムスライステクノロジーにより、Linuxが実行できるプロセス(およびスレッド)の実際の数は、使用可能なCPUおよびコアの実際の数を超える可能性があります。 Linuxカーネルプロセススケジューラは、CPUコア上の複数のプロセスをすばやく切り替え、複数のプロセスが同時に実行されているという印象をユーザーに与えます。
すべてのプロセスが他のプロセスほど重要であるとは限らないため、プロセススケジューラは、プロセスごとに異なるスケジューリング戦略を使用するように指示できます。従来のシステムで実行されているほとんどのプロセスで使用されるスケジューリング戦略は** SCHED_OTHER **(SCHED_NORMALとも呼ばれます)ですが、さまざまな目的のための他のスケジューリング戦略があります。
SCHED_OTHERスケジューリング戦略によって実行されるプロセスの相対的な優先順位は、プロセスのナイス値と呼ばれ、40の異なるレベルのナイス値を持つことができます。
**nice値が高いほど、優先度が低くなります(たとえば、+ 19)。プロセスは、他のプロセスにCPU使用率を放棄する可能性があります。 nice値が低いほど、優先度が高い(-20など)ほど、プロセスはCPUを放棄する傾向が少なくなります。 ****
## プロセスを開始すると、通常、親プロセスのniceレベルが継承され、デフォルトは0です。
[ root@docker-01~]# sleep 6000&[1]25601[root@docker-01~]# ps axo command,pid,nice |grep sleep
sleep6000 256010
grep--color=auto sleep 256030
## 起動レベルを5として指定します[root@docker-01~]# nice -n 5 sleep 6000&[2]25605[1]殺されたsleep6000
[ root@docker-01~]# ps axo command,pid,nice |grep sleep
sleep6000 256055
grep--color=auto sleep 256070
## 既存のプロセスの適切なレベルを変更する
25605( プロセスID)古い優先度は5で、新しい優先度は-15[root@docker-01~]# ps axo command,pid,nice |grep sleep
sleep6000 25605-15
grep--color=auto sleep 256110
Recommended Posts