差分

移動先: 案内検索

システム環境を考えてみる

252 バイト追加, 2015年9月2日 (水) 19:30
/* コマンドを動かす */
を表示するオプションです。
 
<pre class="bash">
% ls -F /
bin/ cdrom/ etc/ home/ lib/ mnt/ proc/ sbin/ usr/
boot/ dev/ floppy/ initrd/ lost+found/ opt/ root/ tmp/ var/
</pre>
 
短く説明すると、この表示されている範囲では/bin、/sbin が、あと /usr/bin、/usr/sbin にコマンドが入っています。binは通常使うコマンド、sbin はシステム管理に使うコマンドが入っています。/var はログデータファイルや一時的に保管しているデータファイルを集めているディレクトリです。/dev はデバイスファイルが入っているディレクトリです。/proc は実際のファイルが入っているわけはなく、カーネルなどの情報をファイルの形で見せているインタフェースです。
 
<pre class="bash">
% pwd
/home/hironobu
</pre>
 
pwd は自分がどこのディレクトリにいるか表示するコマンドです。
 
<pre class="bash">
% mkdir desk
% cd desk
</pre>
 
mkdir はディレクトリを作るコマンドで、今"desk"という名前のディレクトリを作りました。cd は現在いるディレクトリであるカレントディレクトリを移動するコマンドです。もう一度pwdをしてみるとわかります。
 
<pre class="bash">
% pwd
/home/hironobu/desk
</pre>
 
自分の現在使っている環境より派生しているプロセスをpsコマンドを使って表示させてみましょう。今のシェルを含めて表示されます。
 
<pre class="bash">
$ ps
PID TTY TIME CMD
516 pts/1 00:00:00 bash
937 pts/1 00:00:00 ps
</pre>
 
PIDはプロセスID、TTYはターミナル名、TIMEは今までにプロセスが消費したCPU時間、CMDはコマンド名です。では、今、このコンピュータ上で動いているプロセスは全部でいくつあるでしょうか。-Aオプションを使うと、すべてのプロセスが表示されます。
 
<pre class="bash">
$ ps -A
</pre>
 
端末を流れていった行まで戻って数えるのは大変そうです。1行に1プロセスが表示されているのでwcを使ってカウントすれば簡単に数えることができます。パイプ | を使いpsの出力をwcの入力にしてしまいます。行数だけ数えて表示させるにはwcの-lオプションを使います。
 
<pre class="bash">
$ ps -A | wc -l
46
</pre>
 
;補足: 自分自身のプロセスつまりps -Aのプロセスとwc -lのプロセスをカウントいることを注意してください。
今度は、どんなプロセスがあるのか見てみます。画面を一定量スクロールさせるコマンドmoreを使います。moreで止まっている画面を先に進める時はスペースを入力します。
 
<pre class="bash">
$ ps -A | more
</pre>
 
一番最初に見出し行がついているのを忘れていました。先ほどのプロセス数は1つ多いことになります。それでは見出し行を出力しないにはどうしたら良いでしょうか?
オプション "--no-headers" も同様に見出し行を出力しない時に使うこともわかりました。
 
<pre class="bash">
$ ps h -A | wc -l
45
</pre>
 
このパイプで送るというのはUNIXが生み出したアイデアです。ps はプロセスを表示するという機能moreやwcは表示のみ、入力された文字数、単語数、行数を数えるのみの、いわば専門の機能を提供するツールです。psにプロセス数を数える機能や、画面で表示した時に画面のサイズに合わせて一旦停止するといった機能をくわえるという発想も可能でしょう。しかし、そうするとpsのプログラムサイズがどんどん大きくなっていきます。またmoreやwcの機能は別にpsに限らず、他のツールでも同様に必要になります。ならばmoreやwcを独立して作