サーバーが重くて、何が動いてるか見たい
ps aux と ps -ef、どっちを打ったらええん?
【疑問】サーバーが重い。ps aux と ps -ef の違い、top・free・uptime・watch の見方【LPICレベル1】
前提のおさらい。コマンドは「コマンド オプション 引数」で、オプションの書き方にはハイフン付きとハイフンなしがある
>>1
どっちも全部のプロセスを出す。ps の man の例では、ps -ef が標準の書き方、ps aux(ハイフンなし)が BSD の書き方
>>3
見出しの行ps aux:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDps -ef:UID PID PPID C STIME TTY TIME CMD
>>4
aux は CPU とメモリの割合と STAT(状態)が見やすい。-ef は PPID(親プロセスの ID)が出る。TIME は使った CPU 時間
>>4
STAT の文字R 実行中・実行待ちS 待ち(割り込み可能)D 割り込めない待ち(I/O など)T 止められているZ ゾンビ(終わったのに親が後始末してない)
後ろの < 優先度が高い、N 低い、s セッションリーダー、+ フォアグラウンド
>>1
自分のプロセスだけとか、欲しい欄だけとかは?
>>7ps -u ユーザー名、ps -p PID、-o で欄を選べるps -o pid,ppid,ni,stat,comm -p 4321 → PID・親・nice 値・状態・名前だけps aux --sort=-%cpu で CPU の多い順
ずっと見ていたいときは?
>>9top。一定の間隔で表示を更新する。上の数行に全体のようす、その下にプロセスの一覧
>>10
top の中で使うキーP CPU の順、M メモリの順、T CPU 時間の順k PID を聞いてシグナルを送るr PID を聞いて nice 値を変えるq 終了
>>10
一覧の PR と NI は、優先度と nice 値。top -b -n 1 で1回だけ出して終わる(バッチモード)
>>1
メモリは?
>>13free(-h で GiB などの単位つき)。欄は total used free shared buff/cache available
free が小さくても、buff/cache はキャッシュで必要なら空けられるから、新しく使える目安は available(free の man)
>>1
uptime は?
>>15
今の時刻、起動してからの時間、ログインしているユーザー数、ロードアベレージ(過去1分・5分・15分の平均)を1行で出す。w の1行目と同じ
>>16
ロードアベレージは、実行中か実行待ち、または割り込めない待ちのプロセスの数の平均。CPU が8個(nproc で確認)なら、8前後まではだいたい回ってる目安
>>1
同じコマンドを何回も打って見比べるのがだるい
>>18watch コマンド で既定2秒ごとにくり返して全画面で表示。-n 5 で5秒ごと、-d で変わったところを強調
>>3
一覧は ps aux か ps -ef、ずっと見るなら top、メモリは free の available、負荷は uptime。整理できた
管理人のひとこと
ps aux(BSD 形式)とps -ef(標準形式)はどちらも全プロセス。aux は %CPU・%MEM・STAT、-ef は PPID が見やすい。-u・-p・-oで絞り込みと欄の指定、--sortで並べ替え。- STAT:R 実行中、S 待ち、D 割り込めない待ち、T 停止、Z ゾンビ。
<高優先度、N低優先度。 - top は表示を更新し続ける。P CPU 順、M メモリ順、k シグナル、r nice 値の変更、q 終了。
-b -n 1で1回だけ。 - free は available が新しく使える目安。uptime は稼働時間・ユーザー数・ロードアベレージ(1・5・15分)。watch は既定2秒ごとにコマンドをくり返す(
-n間隔、-d差分の強調)。