CentOS6でのpsコマンドについての疑問点

このQ&Aのポイント
  • CentOS6でのpsコマンドに関して、STATの表示やTTYの出力について疑問があります。
  • 一つ目の疑問点は、STATに表示される「Ss」の意味です。二つのSが付く理由とその意味について知りたいです。
  • 二つ目の疑問点は、STATに表示される「W」の意味です。スワップアウトしたプロセスとは何を指すのか、その詳細を知りたいです。
回答を見る
  • ベストアンサー

psコマンドについて

CentOS6で、ps auxを実行した時、わからないことが3点あります。 PSコマンドにてssshの結果を取得しました 【結果】 USER  PID %CPU %MEM VSZ   RSS  TTY  STAT  START  TIME  COMMAND root   1010   0.0   0.0 1612  1172   ?  Ss    16:16    0:00  /usr/sbin/sshd 【質問】 1点目:STATに表示される、「Ss」について  二つSが付く、「Ss」の意味はどういうことなのでしょうか? 2点目:STATに表示される、「W」について  色々調べてみると、「スワップアウトしたプロセス」ということがわかるのですが  「スワップアウトしたプロセスとはどういうことなのでしょうか?」  データみたいにHDDに退避されたプロセス?ということなのでしょうか?  よって、処理速度が遅くなったりする? 3点目:TTYの「?」について  制御端末がない場合のプロセスが、 ?でが出力される。  ということはわかったのですが、このsshdは自動起動設定にしているため  「?」になったのでしょうか? ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

man ps は見ましたか? 小文字の s は、そのプロセスがセッションリーダーであることを示します。端末プロセスグループの親に相当するはず。 Wは、manによると、「paging (not valid since the 2.6.xx kernel)」となっているので、現在のKernelだとないことになっているのでは?古いKernelだとちょうどページングしている瞬間のプロセスと言うことでしょう。 ? はそうですね。

ShiftTail
質問者

お礼

>man ps は見ましたか? すみません。manコマンドをたたいても調べれなかったため 今回質問させてもらいました。 >Wは、manによると、「paging (not valid since the 2.6.xx kernel)」となっているので、現在のKernelだとないことになっているのでは?古いKernelだとちょうどページングしている瞬間のプロセスと言うことでしょう。 なるほど、理解できました。 >? はそうですね。 あってるようで何よりでした。 ご親切に教えて頂きありがとうございました。 助かりました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

とりあえず 1点目は ps(1).

ShiftTail
質問者

お礼

情報ありがとうございます。 >とりあえず 1点目は ps(1) すみません。ちょっと理解できませんでした。 頂いたキーワードで調べてみることにします。

関連するQ&A

  • psコマンドから出る値を取り出す方法

    psコマンド(UNIX)から出る値は USER PID %CPU %MEM VSZ RSS TTY STAT START TIME au  21482 2.6  1.2  4004 3228 ?   S    19:08  0:00 という風に、いくつかのスペースで区切られてます。 これらの数字を取り出すには、どうしたらよいですか。 具体的には、暴走したプロセスを自動的にkill出来るようにしたいのです。 ユーザーが実行しているcpuの値を取り出して、一定数以上の場合、そのPIDを取り出してkillしたいのです。

    • ベストアンサー
    • Perl
  • サーバーで公開しているページがなかなか表示されない

    レンタルサーバーでWEBサイトをいくつか公開してるのですが、 最近、時間はまちまちなのですが 急に公開しているページが、なかなか表示されなかったり タイムアウトでサイトにつながらなくなってしまいます。 原因をしらべたいのですが 何から調べるのがいいのかわからなく困っています。 サーバーの方からメールで繋がらなくころのTOPコマンド内容がくるのですが、何かこの内容からわかる部分とかあるでしょうか? すいませんが、 もしなにかわかるようなところがありましたらよろしくお願いします。 heavy loaded. process (220) : 111 load (5) : 5.78, 7.22, 6.84 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND apache 4814 2.9 26.3 350456 272288 ? D 04:45 0:56 /usr/sbin/httpd apache 4813 2.0 31.6 424168 326876 ? D 04:45 0:38 /usr/sbin/httpd apache 4071 0.9 0.3 19916 4036 ? S 03:58 0:45 /usr/sbin/httpd apache 4327 0.9 0.3 19836 3796 ? S 04:13 0:37 /usr/sbin/httpd apache 3740 0.8 24.5 332128 253488 ? D 03:44 0:49 /usr/sbin/httpd apache 4006 0.8 0.3 19880 3952 ? S 03:54 0:42 /usr/sbin/httpd apache 4815 0.5 0.3 19848 3880 ? S 04:45 0:09 /usr/sbin/httpd apache 3711 0.3 0.3 19844 4044 ? S 03:44 0:18 /usr/sbin/httpd apache 4325 0.3 0.4 19904 5120 ? S 04:13 0:12 /usr/sbin/httpd apache 4328 0.3 0.3 19816 4004 ? S 04:13 0:12 /usr/sbin/httpd 。。。。

  • CPU 使用率について(ps,top,sar)

     "ps -aux"コマンドを利用したスクリプトを作成し、CPU 使用率を定期的に監視するようにしています。 先日、このスクリプトで CPU 使用率 99% を示す異常がありましたが、同じタイミングで top や sar を 試したところ、CPU 使用率は 1% もありませんでした。 異常があった時の ps -aux の取得結果は以下の通りです。 USER   PID %CPU %MEM VSZ RSS TTY STAT START  TIME COMMAND root    7 99.9  0.0  0  0  ?  SW Jul23 272:54 [kscand/Normal] ※等幅フォントだと見易いです kscand で CPU を 99.9% 消費しているように見えるのですが、top や sar コマンドの CPU 使用率は いずれも 1% 未満でした。またサーバの動作自体は軽快で、とても CPU を使い切っているようには 思えませんでした。 この事から ps コマンドの異常か何かだと思うのですが、ps と top や sar で取得する CPU 使用率の値に どの様な違いがあるのでしょうか。また、取得する値についてそれぞれ信頼性はあるのでしょうか。 ご存知の方いらっしゃいましたらご教示の程お願いします。 ■バージョン OS:Redhat Linux 9 (Shrike) procps version 2.0.11 sysstat version 4.0.7

  • スクリプト中に日本語を表示させたい。

    現在top監視スクリプト作成中なのですが、内容に日本語を 含めたくとも文字化けしてしまいます。 #!/bin/sh AVE=`uptime | sed 's/[.,]//g' | awk '{print $(NF-2)}'` if [ $AVE -gt 100 ];then echo "`date +%m/%d/%a/;` `uptime`" >> ./top.$$ top -b -n1 |awk '{if((5>=NR)&&(2<=NR)){print}}' >> ./top.$$ echo ----------------------------------------------------------------------------- >> ./top.$$ printf "USER PID %%CPU %%MEM VSZ RSS TTY STAT START TIME COMMAND\n" >> ./top.$$ ps aux |sort +4r |head -10 >> ./top.$$  >> ./top.$$ CPU負荷平均率が$AVEを超えました。 >> ./top.$$ fi 文字コードを指定するnkfを試しても文字化けは変わらず。 どうしたら文字化けせずにログを保存できますでしょうか

  • topコマンドで表示されるVIRT、RESおよびSWAPの意味について

    topコマンドで表示されるVIRT、RESおよびSWAPの意味について教えてください。 CentOS5.4上で動作しているアプリケーションの使用メモリについて調査しています。 サーバのメモリ容量は512MBで、この上でスワップアウトしないようにアプリケーションの起動数(常駐)を調整しようとしています。 topコマンドでプロセスが使用している物理メモリ容量はRES項目を見れば良いことがわかっていますが、VIRT(仮想メモリの総量)とSWAP(スワップされたサイズ)が具体的に何を示しているのかがわからず、困っています。 topコマンドの出力結果は下の通りです。 この検証用サーバでは暫定的にパーティション設定でスワップ領域を作成していません。 しかしtopコマンドではVIRTとRESの数値は差異があり、SWAP項目も大きな値を示しているプロセスがあります。 スワップ領域が無いのではtopコマンドはVIRTとRESが同じになり、SWAPはゼロとなると予想していたのですがどうしてならないのですか? top - 03:35:44 up 36 min, 3 users, load average: 0.13, 0.17, 0.20 Tasks: 90 total,  1 running, 89 sleeping,  0 stopped,  0 zombie Cpu(s): 0.0%us, 1.3%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st Mem:  515340k total,  452152k used,  63188k free,  18132k buffers Swap:    0k total,    0k used,    0k free,  347404k cached  PID USER    PR NI VIRT RES SHR S %CPU %MEM  TIME+ SWAP COMMAND  4602 tomcat  25  0 645m 28m 6996 S 0.0 5.8  0:04.12 616m java  2227 root   34  19 25656 10m 2108 S 0.0 2.0  0:00.12 14m yum-updatesd  1680 root   17  0 11580 9964 240 S 0.0 1.9  0:00.02 1616 restorecond  1936 haldaemo 18  0 5472 3676 1688 S 0.0 0.7  0:01.20 1796 hald  2499 root   18  0 10540 2916 1504 S 0.0 0.6  0:00.03 7624 httpd  3672 root   15  0 10064 2888 2308 S 0.7 0.6  0:02.50 7176 sshd  3927 root   20  0 9916 2880 2308 S 0.0 0.6  0:00.34 7036 sshd  2054 root   18  0 10116 2328 1696 S 0.0 0.5  0:00.04 7788 cupsd  2500 apache  25  0 10540 2088 640 S 0.0 0.4  0:00.00 8452 httpd どうしてもズレるので画像を添付してます。

  • load averageが0.50を超えた時だけメール送信

    LINUXでtopコマンドのロードアベレージが0.50を超えた時に top.logファイルに内容を記述してさらにメールを送る。 0.50を超えない場合には何も残さないというスクリプトを 作りたいのですが、うまくいきません。 ifの書き方などが悪いのでしょうか #!/bin/sh AVE=`top -b -n1 |sed 'y/,/ /' |awk '{if(1>=NR){print $(NF-2)}}'` if [ $AVE > 0.50 ]; then echo ----------------------------------------------------------------------------- >> ./top.log top -b -n1 |awk '{if(5>=NR){print}}' >> ./top.log echo ----------------------------------------------------------------------------- >> ./top.log printf "USER PID %%CPU %%MEM VSZ RSS TTY STAT START TIME COMMAND\n" >> ./top.log ps aux |sort +4r |head -10 >> top.log echo ----------------------------------------------------------------------------- >> ./top.log echo ----------------------------------------------------------------------------- >> ./top.log mail -s load_average root < top.log else echo ok fi 今はとりあえず0.50を超えない時はOKと出力されるように してますが、何もログを残さずメールも送らないように したいのです。どなた様か教えてくださいませ!

  • CPU使用率取得方法について

    プロセス毎のCPU使用率を測定したいと思っています。 /proc/PID/statと/proc/statの両方のファイルの値で 算出可能でしょうか? 自分で考えたのは以下のような算出方法です。 ----------------------------------------- プロセスの実行時間(stime+utime) / システムのCP実行時間(user+sys+idel)をあるモニタ間隔で取得し、その差分から算出。 ----------------------------------------- topコマンドの中身も見てみましたが、プロセス毎の 算出方法は解りませんでした。 算出方法等お解りの方がいらっしゃいましたら、ご教授下さい。 ※ topコマンドからの直接の取得というのは今回は避けたいです。 ( 結果は同じだとしても。。)

  • awkでの出力項目の追加方法について

    はじめまして。 急遽UNIXサーバをメンテすることになったUNIX素人です。時間に迫られており勉強する時間も今はとれず、皆様のお知恵をお借りしたく質問させていただきます。 現在、コマンド出力結果などの各行の先頭に、日時分秒を追加してテキストファイル出力するシェルスクリプトの作成をしています。 awk を使用して実現したいと思っていますが、具体的な方法についてアドバイスをいただけたらと思っています。 なお、コマンド出力結果をawkへ引き渡す方法は、スクリプト内で直接渡しても、一旦ファイル出力したものを読み込む形のどちらでもよいと思っています。 例 ・ps の出力結果 PID PPID PGID WINPID TTY UID STIME COMMAND 1072 1 1072 1072 con 1005 10:41:29 /usr/bin/bash 1052 1072 1052 544 con 1005 10:50:14 /usr/bin/ps ・日時分秒 を追加した結果 DATE PID PPID PGID WINPID TTY UID STIME COMMAND 200705111735 1072 1 1072 1072 con 1005 10:41:29 /usr/bin/bash 200705111735 1052 1072 1052 544 con 1005 10:50:14 /usr/bin/ps 大変初歩的な質問で申しわけありませんが、なにどぞご教授お願いします。

  • 大量のsendmailのSTATがDでサーバーが高負荷に。。

    topコマンドでサーバーを監視していると、1日に何回か、 急激にtasks の数が普段130程度なのが急上昇して 200 くらいになり、 同時に load average の値が、普段 0.1から 0.5 程度なのが 20 とか30 まで急上昇します。 急激に増えたtasks が何なのか調べようと #ps -aux を打って見ると、それは以下のようにほとんど全てが sendmail で、 迷惑メールがサーバーに流れ込んでいる状態なんだと思います。 そして、そのほとんどの sendmail の STAT が D になっています。 そして高負荷な状態が3分から10分継続します。 STAT COMMAND D sendmail: sm-acceptingconnections: m48B0GUt030737 static-72-224-7-89.ipcom.comunitel.net [89.7.224.72] (may be forged): RCPT D sendmail: sm-acceptingconnections: m48B0Gu1030737 maverick.lucnetsolutions.com [67.19.81.178] (may be forged): RCPT TO:< D sendmail: sm-acceptingconnections: server [148.74.30.182] startup D sendmail: sm-acceptingconnections: server 61.11.127.123-bb.static.vsnl.eth.net [61.11.127.123] (may be forged) startup D sendmail: sm-acceptingconnections: server 59-115-193-195.dynamic.hinet.net [59.115.193.195] cmd read D sendmail: sm-acceptingconnections: server 61-91-154-194.static.asianet.co.th [61.91.154.194] cmd read D sendmail: sm-acceptingconnections: m48B0N92030737 host-84-223-248-186.cust-adsl.tiscali.it [84.223.248.186]: QUIT しかし迷惑メールは基本的に一日中流れ込んでいて、sendmailの数が 上昇することはあっても load average が急上昇することはなく、 そのsendmailのSTAT は 大抵 S となっています。  STAT が D のsendmailプロセスが大量に発生しているときだけ、 load averageが20や30まで急上昇します。 STAT が D というのは 「割り込み不可のスリープ状態」だそうですが、 これはどういう状態なんでしょうか。また何故、発生するのか悩んでいます。 メモリー不足の線も考えましたがスワップが発生しているようでもなく・・ こういう状態になるたびにサーバーが重くなるので困っています。 何かsendmail以外の原因でサーバー負荷が大きくなった結果として STATがDのsendmailが溜まったのかとも考えますが、 目を凝らしてtopやアクセスログを見てもそれらしい動きはなく 全く分かりません。 どこかチェックすべき点、対処法、sendmailプロセスのSTATがDの意味・・ などアドバイスをぜひ宜しく御願いいたします。

  • Powershell プロセス二重起動

    PowerShell初心者です。 自身で起動中のスクリプトと同じコマンドで実行しているプロセスを検知し、他方のプロセスをkillしようと考えております。要は二重起動のチェックをしたいです。 現在コマンドラインで確認しているのですがどうもうまくいきません。 やろうとしている操作は以下です。 (1)ファイルにプロセス情報を出力。 PS C:\> $tempfile = "C:\pswork\servicemon\temp.log" PS C:\> Get-WmiObject win32_process ` | select Name, ProcessId, CommandLine ` | sort Name ` | Format-Table -AutoSize ` | Out-File -FilePath $tempfile -width 1000 (2)自分のPID以外のプロセス情報を取得 PS C:\> $mypid = $PID PS C:\> $killpidtmp = Get-Content $tempfile | Select-String -Pattern ".*powershell.exe.*svmon131_loop.*" |Select-String -NotMatch -Pattern "\s$mypid\s" PS C:\> echo $killpidtmp powershell.exe 2024 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\pswork\servicemon\svmon131_loop.ps1 (3)splitでプロセス番号のみを取得。 PS C:\> $killpid = echo $killpidtmp |% {$($_-split(" "))[1]} PS C:\> echo $killpid ★ここがうまく取得できません。空白しか取得できていません。 (4)最終的には取得したPIDでプロセスを終了。 PS C:\pswork\servicemon> Stop-Process -ID $killpid Bシェルで同様のスクリプトがあったので、それを参考にPowerShellで書こうとしているので、 そもそも無理があるのかもしれないかと考えています。 上記の方法でなくてもよいので、二重起動のチェックと該当プロセスの停止で参考となる情報があれば教えて頂きたいです。