げんきちの秘密基地

エンジニアリングが世の中の思いを実現してきた歴史に気づき、29歳未経験からWEBエンジニアとして転生!【Danger】綺麗事を割と本気で言ってきます【GitHub】https://github.com/0840kg【Twitter】https://twitter.com/0840kg

ps -efコマンドの読み方

ぞす!げんきちです!\\\\٩( 'ω' )و ////

 

「いや、誰だよ」って方は、下記リンクを見てやってください。

  1. はじめまして!げんきちです! - げんきちの秘密基地

  2. 僕がエンジニアになりたい理由 - げんきちの秘密基地

目次〜

f:id:Genkichi:20190310005933j:plain

 

 

きっかけ

$ ps -ef | grep unicorn
ec2-user  2622  2421  0 06:50 pts/0    00:00:02 unicorn_rails master -c config/unicorn.rb -E production                                       
ec2-user  2651  2622  0 06:50 pts/0    00:00:00 unicorn_rails worker[0] -c config/unicorn.rb -E production                                    
ec2-user  3158  2888  0 08:08 pts/1    00:00:00 grep --color=auto unicorn

なんかユニコーンっぽいプロセスが3つ(?)動いてるのか...

 

$ kill 2622
$ ps -ef | grep unicorn
ec2-user  3205  2888  0 08:17 pts/1    00:00:00 grep --color=auto unicorn

一気に2つ消えた?

 

$ kill 3241
-bash: kill: (3241) - そのようなプロセスはありません

ん...?

 

$ kill 2888
$ ps -ef | grep unicorn
ec2-user  3246  2888  0 08:29 pts/1    00:00:00 grep --color=auto unicorn

今度は消えない...

 

$ kill 2888
$ ps -ef | grep unicorn
ec2-user  3248  2888  0 08:29 pts/1    00:00:00 grep --color=auto unicorn

 

なぜだぁあああああ!!!

 

ということで、ps -efコマンドの出力結果について調べました。

 

ps -efの出力結果の読み方

$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Mar03 ?        00:00:01 /sbin/init

#省略

 

UID(EUID):実効ユーザーID
PID:プロセスのプロセス ID 番号
PPID:親プロセスのプロセス ID
C:プロセッサ使用率。プロセスの生存期間中に利用したパーセンテージを表す整数
STIME:プロセスの起動時刻、起動日
TTY:制御端末 (tty)
TIME:累積した CPU 時間
CMD:実行コマンド

 

TTYってなんだ?

 

TTYとは

teletypewriterの略。

PCと接続している入出力用の端末を指している。
ptsはsshなどの仮想端末であり、ttyは実端末を意味している。

 

 

・・・

大先輩と出会えました!

 

たとえば,いま自分が使っている端末がどれかを表示するには,

$ tty

と実行します(「/dev/pts/0」などと表示されるはずです).

また,

$ echo hogehoge > /dev/pts/0

などを実行すると,/dev/pts/0 に割り当てられた仮想端末に「hogehoge」と表示されます.kterm などの仮想端末をいくつか立ち上げたあと,数字をいろいろ変えて遊んでみると,なんとなく感じがわかるかと思います。

q.hatena.ne.jp

 

遊んでみた

まず同じユーザーで、異なるターミナルからSSHでログイン。

$ w
 11:55:30 up 5 days,  4:43,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
ec2-user pts/0    fs276ed325.tkyc5 11:51    2.00s  0.00s  0.00s w
ec2-user pts/2    fs276ed325.tkyc5 11:53   42.00s  0.00s  0.00s -bash

出力する側

$ tty
/dev/pts/2
$ echo hoge > /dev/pts/0

出力される側

$ tty
/dev/pts/0
$ hoge

 

...ぉおお。なんか面白い。

echoコマンドで文字列を出力できる。

= /dev/pts/0は仮装ファイルであることが分かりました。

 

ただ、/dev/pts/って何だ?

 

/dev/pts/とは

devは、deviseの略。

ptsは、pseudo-terminalの略。

バイスファイルと呼ばれる、接続してきた人がデバイスとやり取りするためのファイルが作られるディレクトリ。

 

うん。わかったようで分からない。

 

全体像

f:id:Genkichi:20190309130352p:plain

blog.takanabe.tokyo

 

ふぉーん。

 

標準入出力先となっている端末デバイス

sshログイン前=>dev/ttys0003

sshログイン後=>dev/pts/1

 

自覚からの対策

うーん...なんかこう、しっくりこない。

たぶん個別的な理解が必要な段階じゃない感じ。

もっと基本的な、デバイスとは?OSとは?的な土台が足りない感じ。

 

急がば回れ...買いました/(^o^)\

 

bookclub.kodansha.co.jp

 

また勉強したらアウトプットします!

 

<一日一新>

 すごい煮干しラーメン。癖が癖になる。

 

<学習進捗>

学習開始からの期間 :89日
今日までの合計時間:878h
今日までに到達すべき目標時間:811h
目標との解離:67h
10,000時間」まで、

 

残り・・・9,122時間!」

 

以上です。

読んでくれた方々、ありがとうございました!((_ _ (´ω` )ペコ。

genkichi.hateblo.jp

genkichi.hateblo.jp

 

f:id:www08056561815:20190224095507g:plain

twitter.com