:star:
"優れた管理者はすべてを知っている必要はありませんが、不可能なプロジェクトに対して驚くべき解決策を考案できるべきです。" - cwheeler33 (ServerFault)
:star:
"私のスキルは物事を機能させることであり、無数の事実を知ることではありません。[...] システムを修正する必要がある場合、問題を特定し、ログを確認し、エラーを調べます。ソリューションを実装する必要がある場合、適切なソリューションを調査し、実装して文書化します。その後、頻繁に操作しない限り、それがどのように機能するかについて大まかな知識しか持っていません...だから文書化しているのです。" - Sparcrypt (Reddit)
ℹ️ このプロジェクトには 284 のテスト問題と回答が含まれており、知識をテストしたり、Linux (*nix) システム管理者 などのポジションの面接/試験中に使用できます。
✔️ 回答は 例 に過ぎず、トピック全体を網羅しているわけではありません。ほとんどの回答には、より深く理解するための 役立つリソース が含まれています。
⚠️ *** が付いた質問にはまだ回答がないか、回答が不完全です - プルリクエストを作成して追加してください!
🚥 意味が通じない点や正しくないと思われる点があれば、プルリクエストを作成してください。変更内容やコメントについて、妥当で十分に説明された理由を添えてください。
📚 知識/スキルを向上させるには、devops-interview-questions を参照してください。非常に興味深いものです。
» すべての提案を歓迎します «
| 章の種類 | 質問数 | 簡単な説明 |
|---|---|---|
| はじめに | ||
| 🔸 簡単な質問 | 14 問 | リラックスした楽しく簡単な質問で、すべてを始めるのに最適です。 |
| 一般知識 | ||
| 🔸 ジュニアシステム管理者 | 65 問 | 基本的な知識に基づいた、かなり簡単でストレートな質問です。 |
| 🔸 レギュラーシステム管理者 | 94 問 | 十分な知識があることを前提とした中級レベルの質問です。 |
| 🔸 シニアシステム管理者 | 99 問 | 難しい質問と謎かけです。優れた管理者になりたいなら試してみてください。 |
| 秘密の知識 | ||
| 🔸 グルシステム管理者 | 12 問 | グルシステム管理者を知るための非常に深い質問です。 |
私の好きな Linux ディストリビューション:
役立つリソース:
GNU は実際には OS ではありません。それは自由ソフトウェアを規定する一連のルールや哲学のようなもので、同時に OS を作成しようとしながら多数のツールを生み出しました。つまり、GNU ツールは基本的にすでに存在していたツールのオープンバージョンであり、オープンソフトウェアの原則に準拠するように再実装されたものです。GNU/Linux はそれらのツールと Linux カーネル を組み合わせて完全な OS を形成したものですが、GNU/Hurd など他の GNU も存在します。
Unix と BSD は、さまざまなレベルの「クローズドソース」である POSIX の「古い」実装です。Unix は通常完全にクローズドソースですが、Linux と同様に(あるいはそれ以上に)多くの種類の Unix が存在します。BSD は通常「オープン」とは見なされませんが、リリース当時は非常にオープンであると考えられていました。そのライセンスは、当時のより「オープン」なライセンスよりもはるかに少ない制限で商用利用を許可していました。
Linux はこれらの中で最も新しいものです。厳密に言えば「単なるカーネル」ですが、一般には GNU ツールやその他の中核コンポーネントと組み合わせて完全な OS と考えられています。
これらを区別する主な違いは、その理念です。Unix、Linux、BSD はそれぞれ異なる理念を持っています。すべて POSIX であり、基本的には互換性があります。いくつかの同じ問題を異なる方法で解決します。したがって、理念と POSIX 標準の実装方法の選択以外には、大きな違いはほとんどありません。
詳細については、GNU、OSS、Linux、BSD、UNIX の作成に関する簡単な記事を読むことをお勧めします。それらはそれぞれの考え方に偏っていますが、これらの記事で違いをよりよく理解できるはずです。
役立つリソース:
CLI は Command Line Interface(コマンドラインインターフェース)または Command Language Interpreter(コマンド言語インタプリタ)の略語です。コマンドラインはシステム/コンピュータを制御する最も強力な方法の一つです。
Unix 系システムでは、CLI はユーザーがシステムに実行させるコマンドを入力するためのインターフェースです。CLI は非常に強力ですが、エラーに対する許容度は低いです。
CLI を使用すると、システム内部やコードをより細かく操作できます。使用する OS に関係なく、GUI よりも柔軟性と制御性に優れています。例えば Github でホストされているソフトウェアを使用する場合、それらを実行するために CLI でコマンドを実行する必要があるものも多くあります。
お気に入りのツール
screen - フリーのターミナルマルチプレクサ。セッションを開始すると、接続が切れてもターミナルが保存されるため、後で自宅から再開できます。ssh - 全般的に学ぶ価値のある最も重要なコマンド。次のような素晴らしいことができます:
sshfs でインターネット越しにファイルシステムをマウントrsync サーバーに対して rsync デーモンなしで実行し、自身で ssh 経由で起動vi/vim - 最も人気のある強力なテキストエディタ。ユニバーサルで、大きなファイルでも非常に高速に動作します。bash-completion - シェル用の定義済み補完ルールが多数含まれています。ヒントとテクニック
CTRL + R でコマンド履歴を検索popd/pushd やその他のシェル組み込み関数を使ってディレクトリスタックを操作CTRL + U、CTRL + E などの編集用キーボードショートカット!* - 最後のコマンドのすべての引数!! - 最後のコマンド全体!ssh - ssh で始まる最後のコマンド役立つリソース:
BASH がお気に入りです。これは主に好みの問題で、構文が気に入っていて、自分に「しっくり」きます。入出力リダイレクション構文(>>、<< 2>&1、2>、1> など)が C++ に似ているため、認識しやすいです。
ZSH も好きです。BASH よりもはるかにカスタマイズ可能だからです。Oh-My-Zsh フレームワーク、強力なコンテキストベースのタブ補完、強化されたパターンマッチング/グロビング、ロード可能モジュールなどがあります。
役立つリソース:
man [コマンド名] でコマンドの説明を表示できます(例:man less、man cat)
-h または --help - 一部のプログラムはこのパラメータを渡されると説明書を表示します(例:python -h、python --help)