2020年 2月 の投稿一覧

【LinuC 101】デバイスファイル

Linuxは、外部リソースをすべてファイルという概念で扱います。

デバイスを意味するファイルはデバイスファイルと呼ばれ、

2003年にリリースされたLinuxカーネル2.6 からは、udevという仕組みにより、

デバイスファイルを/dev以下に自動で作成してくれるようになりました。

udev はデーモンとして常駐しており、カーネルからのメッセージを受けて、

デバイスの存在を認識したり、デバイスがなくなったりしたときに、

デバイスファイルを作成したり消去したりします。

【LinuC 101】プロセスとデーモン(daemon)

Linuxサーバ上で動いているプログラムは全てプロセスとして管理されており、
プロセスには、Linuxが起動した後にメモリ上に常駐するプロセスと、
実行するときだけメモリ上に読み込まれて実行後すぐに終了するプロセスがあります。

メモリ上に常駐するプロセスは、Linuxが稼働するために必要なプログラムとして動作しており、
メモリ上に常駐するプロセスはデーモン(daemon) と 呼ばれます。
※デーモンの意味は,悪魔の「demon」ではなく守護神の「daemon」です。

メモリ上に常駐するプロセス(デーモン)に対して、
コマンドラインでユーザーが実行するプログラムなどが、
実行するときだけ動作するプロセスとなります。





後程、詳しく説明致しますが、
プロセスの表示にはコマンドps を使います。
下記では、コマンドps にオプションauxf を付けてコマンド実行しプロセスを表示しています。


また、プロセスは/proc 配下にプロセスディレクトリとして、
/proc/(プロセスID)ディレクトリの表記で保存され、
プロセスが終了すると、その /procプロセスディレクトリは消えます。

ディレクトやファイルの表示にはコマンドls を使います。
下記では、コマンドls にオプション-al を付けてコマンド実行し/proc/配下を表示しています。

/proc/(プロセスID)ディレクトリの、
プロセスディレクトリには下記のようなファイルが含まれています。
プロセスの詳細を調べる事ができますが、内容を編集したり削除してしまうと、
システムに影響がでる場合があるので、参照用として利用します。


cmdline      プロセスを開始したコマンド
cwd        プロセスのカレントワーキングディレクトリ(CWD)へのシンボリックリンク
exe       プロセスの実行ファイルへのシンボリックリンク
root       ルートディレクトリへのシンボリックリンク
cpu       各cpuでのCPUタイムと統計情報
environ     プロセスの環境変数の一覧
fd         プロセスが使用しているファイル・デバイスのファイル記述子
maps      プロセスのアドレス空間の状態
mem      プロセスのアドレス空間の内容
statm      プロセスのページ割り当て
stat        プロセスの状態
status      プロセスの状態(statより詳しい内容)



Linuxに限らずですが、システムを触っていると、
役目を終えているのにプロセスが終了せず、
メモリを開放してくれないプロセスについて対応する場面が出てくると思います。
そんな状態のプロセスを「ゾンビプロセス」や「孤児プロセス」と言ったりします。

【LinuC 101】絶対パス(absolute path)と相対パス(relative path)

Linuxのディレクトリ構造は、一番上の「/」を頂点として階層構造となっています。

このルートディレクトリ「/」を起点にして階層を順番に下って
ディレクトリ や ファイル の場所を表すを方法を、
絶対パス(フルパス)と言います

絶対パスはルートディレクトリ 「/」 からの場所で表記するので、
誰から見ても同じ場所にたどりつくことができます。

そして、絶対パスに対して、現在作業中のディレクトリから、
目的のディレクトリまたはファイルまでの経路を表す、
相対パスというものがあります。

相対パスは作業しているディレクトリからのパスなので、
作業ディレクトリが変わると相対パスのスタート地点も変わり、
表記するパスも変わります。

また、相対的パスを表すために、以下の記号が用意されています。

記号   |   意味
——————————————————————–
.     |    現在のディレクトリ
..     |   上の階層のディレクトリ
~    |    (チルダ) ホームディレクトリ


上の階層のディレクトリを指す .. を使った例を下記に紹介します。



【LinuC 101】カレントディレクトリ

Linuxでは、GUI(Graphical User Interface)環境とCUI(Character User Interface)環境があります。

GUIはWindowsなどと同じようなデスクトップ環境で、CUIはコマンドラインの環境となります。
また、CUI環境は「CLI(Command Line Interface)」と呼ばれることもあります。

仕事で使う事になると、CUI環境で使う場面の方が多いと思いますし、
LinuCの勉強もCUI環境で問題ないです。

コマンドを入力する場所を「コマンドライン」と呼び、

下記の画像のコマンドラインの「[root@alpha ~]#」の部分は、

デフォルトでは「”ユーザー名”+”@”+”ホスト名”+”カレントディレクトリ”+”$”」となっています。

※rootユーザーの場合は、$が#になります。

CUI環境では、 現在のディレクトリを意識する必要があり、
現在のディレクトリ(作業中のディレクトリ)の事を 、
カレントディレクトリ(Current Directory)といい、
コマンドラインでは、下記のうように表示されます。

※ ~ は チルダ と読みます。
 チルダはホームディレクトリの事を指します。

rootユーザーのホームディレクトリはrootディレクトリになりますので、
rootユーザーのチルダは、rootディレクトリの事を指します。

カレントディレクトリを変更するときは、コマンドcdで変更します。


チルダを使ってカレントディレクトリをホームディレクトリに移動する事もできます。

下記は、チルダを使って、/etc から /root へカレントディレクトリを移動しています。



通常、rootユーザー以外のホームディレクトリは、homeディレクトリの中に格納されます。
また、ログイン直後のカレントディレクトリはそのユーザーのホームディレクトリです。

ログイン直後は必ずカレントディレクトリがチルダ表示
 通常は、チルダ = ホームディレクトリ
※※ユーザー作成時に作業ディレクトリの指定もできる為、通常としましたが、理由がなければユーザー作成時にユーザー名と同じ名前のディレクトリが作成されて、そこがホームディレクトリになります。

rootユーザーでログインした場合は、カレントディレクトリがrootディレクトリになっており、
その他のユーザーでログインした場合は、
そのユーザーのホームディレクトリが、カレントディレクトリとなります。

現在のカレントディレクトリの確認は、コマンドpwdで確認できます。