Linuxでのコマンドps(ps-aux)の詳細な説明

7777 ワード

プロセスのモニタリングと制御を行うには、まず、現在のプロセスの状況、すなわち、現在のプロセスを表示する必要があることを理解しなければならないが、psコマンドは最も基本的であり、非常に強力なプロセス表示コマンドである.このコマンドを使用して、実行中のプロセス、実行中のステータス、プロセスが終了するかどうか、プロセスにゾンビがいるかどうか、リソースが多すぎるプロセスなどを特定します.つまり、ほとんどの情報は、このコマンドを実行することによって得ることができる.psはプロセスの使い捨ての表示を提供し、提供された表示結果は動的に連続していない.プロセス時間を監視するにはtopツールを使用します.killはプロセスを殺すために使用されます.psコマンドが最も一般的に使用するのは、バックグラウンドプロセスの動作を監視するためであり、バックグラウンドプロセスはスクリーンキーボードなどの標準入出力装置と通信しないため、その状況を検出する必要がある場合はpsコマンドを使用することができる.I,psコマンド使用権限:すべての使用者使用方式:ps[options][--help]説明:瞬時ストロークを表示する動的1)ps aは、現行の端末機下のすべてのプログラムを表示し、他のユーザのプログラムを含む.
gl@gl-virtual-machine:~/test$ ps a
   PID  TTY    STAT   TIME  COMMAND
  1313  tty7     Ssl+    0:10   /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/r
  1546  tty1     Ss+    0:00   /sbin/agetty --noclear tty1 linux
  2680  pts/8    Ss      0:00   bash
 10387  pts/8    R+     0:00    ps a

2)ps-Aはすべてのプログラムを表示する.
gl@gl-virtual-machine:~/test$ ps -A
   PID  TTY       TIME    CMD
     1   ?        00:00:03  systemd
     2   ?        00:00:00  kthreadd
     4   ?        00:00:00  kworker/0:0H
     6   ?        00:00:00  ksoftirqd/0
     7   ?        00:00:02  rcu_sched
     8   ?        00:00:00  rcu_bh
     9   ?        00:00:00  migration/0
    10   ?        00:00:00  lru-add-drain
    11   ?        00:00:00  watchdog/0
    12   ?        00:00:00  cpuhp/0
    13   ?        00:00:00  cpuhp/1
    14   ?        00:00:00  watchdog/1
    15   ?        00:00:00  migration/1
    16   ?        00:00:01  ksoftirqd/1
    18   ?        00:00:00  kworker/1:0H
    19   ?        00:00:00  kdevtmpfs
    20   ?        00:00:00  netns

3)pscがプログラムをリストすると、パス、パラメータ、または常駐サービスの表示を含まない各プログラムの真の命令名が表示されます.4)ps-eこのパラメータの効果は、指定した「A」パラメータと同じです.5)ps eプログラムをリストすると,各プログラムで使用される環境変数が表示される.6)ps fはASCII文字で木構造を表示し,プログラム間の相互関係を表す.7)ps-Hはツリー構造を示し,プログラム間の相互関係を示す.8)ps-Nは、ps命令端末機の下のプログラムを実行する以外、すべてのプログラムを表示する.9)ps sはプログラム信号の形式でプログラム状況を表示する.10)ps Sがプログラムをリストする場合,中断されたサブプログラム資料を含む.11)ps-t端末番号を指定し、その端末に属するプログラムの状況をリストする.12)psuは、ユーザ名と起動時間の順にプロセスを表示する.13)ps xはすべてのプログラムを表示し,端末機で区別せず,すなわち制御端末のないプロセスを表示する.最も一般的な方法はps-auxであり、パイプシンボルをgrepに導いて特定のプロセスを検索し、特定のプロセスを操作します.14)ps l長フォーマット出力
gl@gl-virtual-machine:~/test$ ps l
F   UID    PID    PPID  PRI  NI   VSZ     RSS  WCHAN  STAT  TTY      TIME  COMMAND
0  1000   2680   2675  20    0   29548   4944   wait        Ss       pts/8      0:00       bash
0  1000  10398  2680  20    0   35984   1440   -             R+       pts/8      0:00        ps l

15)ps jはタスクフォーマットでプロセス16を表示する)ps rは実行中のプロセス17を表示する)ps-wはより多くの情報を表示することができる18)ps-auはより詳細な情報を表示する19)ps-auxは他の利用者を含むすべてのストローク20を表示する)ps-wwは詳細なパラメータが遮断されることを避ける私たちがよく使うオプションはauxまたはlaxであり、パラメータfの応用である.
II、linux上のプロセスには5つの状態があります.
  • 実行(実行中または実行キューで待機中)
  • 割り込み(休止中、阻害され、ある条件の形成を待つか、信号を受信するか)
  • .
  • 割り込み不可(受信信号が起動せず、実行不可であり、プロセスは割り込みが発生するまで待たなければならない)
  • .
  • 硬直(プロセスは終了したが、親プロセスがwait 4()システム呼び出しを呼び出した後に解放されるまでプロセス記述子は存在する)
  • 停止(プロセスがSIGSTOP、SIGSTP、SIGTIN、SIGTOU信号を受信して運転を停止する)psツールはプロセスの5種類の状態コードを識別する:D中断不可uninterruptible sleep(usually IO)R運転runnable(on run queue)S中断sleeping T停止traced or stopped Z硬直a defunct(“zombie”)process注:その他の状態はW(駐在ページなし)を含む.psフォーマット出力を使用してプロセスステータスを表示:
  • ps -eo user,stat..,cmd
    

    例:現在のシステムプロセスのuid,pid,stat,priをuid番号でソートする.
    ps -eo pid,stat,pri,uid –sort uid
    

    現在のシステムプロセスのuser,pid,stat,rss,argsをrssでソートする.
    ps -eo user,pid,stat,rss,args –sort rss
    

    userユーザ名uidユーザ番号pidプロセス番号ppid親プロセス番号sizeメモリサイズ、Kbytesバイト.vsize総仮想メモリサイズ、bytesバイト(code+data+stackを含む)share合計ページ数niceプロセス優先度(デフォルトは0、最大は-20)priority(pri)カーネルスケジューリング優先度pmemプロセス共有物理メモリ数のパーセントtrsプログラム実行コード常駐大rssプロセス使用の総物理メモリ数、Kbytesバイトtimeプロセス実行現在までの総CPU暫定時間statプロセス状態cmd(args)実行コマンドの簡単なフォーマット
    コマンドps-aux
    gl@gl-virtual-machine:~/test$ vi test.c
    (    test.c   :)
    #include
    
    int main()
    {
        system("ps -aux");
        return 0;
    }
    gl@gl-virtual-machine:~/test$ gcc -o test.out test.c
    gl@gl-virtual-machine:~/test$ ls
    a.out  test.c  test.exe  test.out
    gl@gl-virtual-machine:~/test$ test.out
    USER   PID  %CPU  %MEM   VSZ   RSS  TTY  STAT  START  TIME  COMMAND
    root      1     0.4     0.2    119788  5868   ?     Ss   09:20    0:03   /sbin/init spl
    root      2     0.0     0.0      0      0     ?     S    09:20    0:00    [kthreadd]
    root      3     0.0     0.0      0      0     ?     S    09:20    0:00    [kworker/0:0]
    root      4     0.0     0.0      0      0     ?     S<   09:20   0:00    [kworker/0:0H]
    root      6     0.0     0.0      0      0     ?     S    09:20    0:00    [ksoftirqd/0]
    root      7     0.1     0.0      0      0     ?     S    09:20    0:00    [rcu_sched]
    root      8     0.0     0.0      0      0     ?     S    09:20    0:00    [rcu_bh]
    root      9     0.0     0.0      0      0     ?     S    09:20    0:00    [migration/0]
    root      10    0.0     0.0      0      0     ?     S<   09:20  0:00    [lru-add-drain
    root      11    0.0     0.0      0      0     ?     S    09:20   0:00    [watchdog/0]
    root      12    0.0     0.0      0      0     ?     S    09:20   0:00    [cpuhp/0]
    root      13    0.0     0.0      0      0     ?     S    09:20   0:00    [cpuhp/1]
    root      14    0.0     0.0      0      0     ?     S    09:20   0:00    [watchdog/1]
    root      15    0.0     0.0      0      0     ?     S    09:20   0:00    [migration/1]
    root      16    0.1     0.0      0      0     ?     S    09:20   0:01    [ksoftirqd/1]
    root      18    0.0     0.0      0      0     ?     S<   09:20  0:00    [kworker/1:0H]
    root      19    0.0     0.0      0      0     ?     S    09:20   0:00    [kdevtmpfs]
    root      20    0.0     0.0      0      0     ?     S<   09:20  0:00    [netns]
    root      22    0.0     0.0      0      0     ?     S    09:20   0:00    [khungtaskd]
    root      23    0.0     0.0      0      0     ?     S    09:20   0:00    [oom_reaper]
    root      24    0.0     0.0      0      0     ?     S<   09:20  0:00    [writeback]
    htt      3564   0.0     1.7   29460  3704   ?   Sl     20:41  0:00   htt_server -nodaemon
    root     3627   0.0     0.2    3448   552     ?     SNs 20:41  0:00   anacron -s
    ubuntu2  3655   0.0     0.5   13840  1084  ?   Ssl   20:41  0:00   dbus-daemon-1 --system
    

    この表の意味は、USERドメインは、どのユーザがこのコマンドを起動したかを示す%CPU-ユーザは、あるプロセスがどれだけのCPU%MEM-メモリ使用率VSZ-仮想メモリサイズRSS-常駐セットサイズVSZ-は、プログラムが完全にメモリに存在する場合、どのくらいのメモリスペースRSS-が現在実際にどれだけのメモリSTAT-が使用されているかを示すスレッドの現在の状態STAT状態は、多くの場合、Ss、Ss 1、Ss+、S"S":プロセスはスリープ状態(idle)にあるが、これらのプロセスが何らかのイベントの発生を待っていることを示している.ユーザ入力またはシステムリソースの可用性Dは、Uninterruptible(usually IO)を中断することができず、起動できないスリープ状態である可能性がある.通常、このプログラムはI/O待ち(ex>プリント)Rが実行中であるか、キュー内のプロセスT停止状態(stop)、ワークコントロール(バックグラウンド停止)またはエラー除去状態である可能性がある.Z(Zombie)ゾンビ状態で、プログラムは終了したが記憶体外に削除できない.Wメモリ交換に入る(カーネル2.6から無効)“X”:死んだプロセス“L”:一部のページがメモリ“n”:低優先度”s“:サブプロセスを含む”+“:バックグラウンドにあるプロセスグループ;l":マルチスレッド、クローンスレッドmulti-threaded(using CLONE_THREAD,like NPTL pthreads do)"WCHHAH":待ちプロセスリソースSTART-ストローク開始時間TIME-実行時間COMMAND-実行命令の名前とパラメータ適用例:
    [root@localhost ~]# ps -aux |more
    

    |パイプとmoreを接続してページ別に表示できます.
    [root@localhost ~]# ps -aux > ps001.txt
    [root@localhost ~]# more ps001.txt
    

    ここでは、すべてのプロセスを表示し、ps 001に出力する.txtファイルをmoreでページングします.III、kill命令でプロセスを殺すいくつかの方法killはプロセスを終了し、十数種類のプロセスを制御する方法があり、以下はいくつかのよく使われる方法である.
    kill -STOP [pid]
    

    送信SIGSTOP(17,19,23)は,このプロセスを消滅させることなくプロセスを停止する.
    kill -CONT [pid]
    

    SIGCONT(19,18,25)を送信して停止したプロセスを再開する.
    kill -KILL [pid]
    

    送信SIGKILL(9)は、直ちにプロセスを停止させ、クリーンアップ操作を行わないように強制する.
    kill -9 -1
    

    あなたが持っているすべてのプロセスを終了します.SIGKILLおよびSIGSTOP信号は、捕捉、ブラックアウト、または無視することはできないが、他の信号は可能である.だからこれはあなたの究極の武器です.