###導入###
| Linux はサーバー構築でもクライアント開発でも、ほぼどこでも使用されており、フルスタックにはオペレーティング システムの基本スキルが必要です。
|
システムの選択
Linux ディストリビューションは、商用企業が保守するディストリビューションと、コミュニティ組織が保守するディストリビューションに大別され、前者は有名な Redhat (RHEL) に代表され、後者はDebian による。
Redhat は、RHEL、Fedora、CentOS (RHEL のコミュニティ クローン バージョン、無料) を含めて、Redhat シリーズと呼ぶ必要があります。厳密に言えば、Ubuntu は独立したディストリビューションとは見なされません。Ubuntu は Debian をベースに強化されており、Debian のすべての利点と独自の強化された利点を備えたほぼ完璧な Linux デスクトップ システムです。 Ubuntu コミュニティは、何よりも実用性と革新性を重視しています。
比較的安定したサーバー システムが必要な場合は、CentOS が最適で、インストール完了後、簡単な設定で非常に安定したサービスを提供できます。 Hadoop は最初に ubantu 上で開発されました。
###建築###
アーキテクチャを理解すると、より良い方向性が得られます。 Linux には、カーネルとユーザーの 2 つのモードがあります。カーネル、シェル、ファイル システムは合わせて基本的なオペレーティング システム構造を形成します。Linux カーネルは、メモリ管理、プロセス管理、デバイス ドライバ、ファイル システム、ネットワーク管理などの部分で構成されます。
Linux カーネル
Linux カーネルを理解すると、リソースを最大限に活用し、システムをチューニングするときに目的意識を持つことができます。
Linux はメモリを管理可能な「メモリ ページ」に分割し、スラブ アロケータなどの 4KB バッファの抽象化を提供します。プロセスは実際には特定のアプリケーションの実行エンティティであり、プロセスのスケジュール設定によってプロセスの CPU へのアクセスが制御されます。 Linux の一般的なプロセス間通信メカニズムには、シグナル、パイプ、共有メモリ、セマフォ、ソケットなどが含まれます。カーネルは、新しいプロセスの作成 (fork、exec、または POSⅨ)、プロセスの停止 (kill、exit)、およびプロセス間の通信と同期 (シグナルまたは POSⅨ メカニズム) を行うための API を SCI 経由で提供します。
Linux オペレーティング システムは、独立したファイル システムを階層ツリー構造に結合し、単一のエンティティがこのファイル システムを表します。 Linux は多くの異なるファイル システムをサポートし、それらを統合された仮想ファイル システムに編成するため、デバイス ドライバーは、オペレーティング システムとの対話を完了するためにオペレーティング システムが理解できる一連の抽象インターフェイスを提供しますが、特定のハードウェア関連の詳細は、操作はデバイスドライバーによって行われます。 Linux カーネルのネットワーク部分は、BSD ソケット、ネットワーク プロトコル層、およびネットワーク デバイス ドライバーで構成されます。ネットワーク デバイス ドライバーはハードウェア デバイスとの通信を担当し、あらゆるハードウェア デバイスに対応するデバイス ドライバーが存在します。
Linuxファイルシステム
Linux システムは現在一般的なさまざまなファイル システムをサポートでき、EXT4 が推奨されます。
Linux での主なファイルの種類は次のとおりです:
1) 通常のファイルはプレーンテキストとバイナリに分けられます。
2) ディレクトリ ファイル。ファイルが保存される場所。
3) ファイルをリンクします。同じファイルまたはディレクトリを指すファイルです。
4) デバイスファイルはブロックデバイスとキャラクタデバイスに分かれています。
5) パイプファイルはプロセス間通信を提供します
6) ソケットファイル、ネットワーク通信に関連します
Linux は標準のディレクトリ構造を使用しており、インストール プログラムはユーザー用にファイル システムと完全かつ固定されたディレクトリ構成をすでに作成しており、各ディレクトリの役割とその中のファイル タイプを指定しています。
ディレクトリ名 |
簡単な説明 |
###/置き場###
バイナリ実行可能コマンド |
|
/開発
デバイス特殊ファイル |
|
###/等###
システム管理および構成ファイル
|
/etc/rc.d |
起動構成ファイルとスクリプト
|
###/家###
ユーザーのホーム ディレクトリの基点。たとえば、ユーザー abc のホーム ディレクトリは /home/user であり、~abc | で表すことができます。
/lib |
標準プログラミング ライブラリ |
/sbin |
システム管理コマンド、システム管理者が使用する管理プログラムがここに格納されます |
/tmp |
パブリック一時ファイルストレージポイント |
###/根###
システム管理者のホームディレクトリ |
|
/月
システムは、ユーザーが他のファイル システムを一時的にマウントできるようにするためにこのディレクトリを提供します。 |
|
###/探し物を見つけた###
このディレクトリは通常は空です。システムが異常にシャットダウンし、「ホームレス」ファイルが残ります
|
/proc |
仮想ディレクトリはシステム メモリのマッピングです。このディレクトリに直接アクセスしてシステム情報を取得できます。
|
/var |
各種サービスのログファイルなど、特定の大きなファイルのオーバーフロー領域
|
/usr |
最大のディレクトリ。使用するほとんどすべてのアプリケーションとファイルがこのディレクトリにあります。含まれるもの:
/usr/X11R6 X ウィンドウが保存されるディレクトリ
/usr/bin 多数のアプリケーション |
/usr/sbin スーパーユーザー向けのいくつかの管理プログラム
/usr/doc Linux ドキュメント |
/usr/include Linux
でアプリケーションを開発およびコンパイルするために必要なヘッダー ファイル
/usr/lib 一般的に使用されるダイナミック リンク ライブラリとソフトウェア パッケージ構成ファイル
/usr/man ヘルプドキュメント
/usr/src ソース コード。Linux カーネルのソース コードは /usr/src/linux | に配置されます。
/usr/local/bin ローカルに追加されたコマンド
/usr/local/lib ローカルに追加されたライブラリ
シェルはシステムのユーザー インターフェイスであり、ユーザーがカーネルと対話するためのインターフェイスを提供します。ユーザーが入力したコマンドを受信し、実行のためにカーネルに送信するコマンド インタープリタです。シェルには色々な種類がありますが、ここではBASHをオススメします。 BASH は GNU の Bourne Again Shell であり、GNU オペレーティング システムのデフォルトのシェルであり、ほとんどの Linux 配布パッケージがこのシェルを使用します。 Linux シェルとコマンド
Linux には多くのコマンドがありますが、簡単に分類すると以下のようになります。
一連のタスクを完了するためにシェル内で Linux コマンドを編成することは、シェル プログラミングです。 Shell、Perl、Python は Linux で最も一般的に使用されるスクリプト言語ですが、私は依然として Python を使用することをお勧めします。 |
Linux アプリケーション
標準的な Linux システムには通常、テキスト エディター、プログラミング言語、X ウィンドウ、インターネット ツール、データベースなどが含まれるアプリケーションと呼ばれる一連のプログラムがあります。
テキスト編集に関しては、Emacs と vim にはそれぞれの利点があり、プラグインを使用して IDE として使用することもできます。個人的には、VIM は必須のスキルであると感じています。 vim には多くのコマンドもありますが、それらは次のように要約されます:
アプリケーション管理に関する限り、ubuntu では apt コマンドに慣れている必要があり、centos では yum コマンドに精通している必要があります。もちろんソースコードのコンパイルやインストールは必要ですが、makefileの書き方やconfigure/autoconfig/makeの使い方などは慣れているはずです。