毎日使う Linux コマンドのラボ:エンジニアが暗記している30のコマンド

このラボでは、各生徒が自分専用の Ubuntu マシンと、5つの短いレッスンを使います。調べるより覚えたほうが速いコマンドが題材です。動き回る、ファイルをつくって読む、ログを探す、プロセスを止める、アーカイブにまとめる、Web から取ってくる、ほかのマシンにログインする、などです。生徒のパソコンには何もインストールせず、何をしても壊れるのは自分のコピーだけです。

生徒が学ぶこと

pwd、ls、cd で動き回り、ファイルをつくる、コピーする、移す、消す。cat、head、tail でテキストを読み、出力をファイルに送る記号で書き込み、grep とパイプで探す。権限:ls -l の rwx の列を読み、chmod でスクリプトを実行できるようにする。プロセス:ps で見つけ、kill で止める。そして、kill -9 を、どうしても止まらないものだけに取っておく理由。df、du、free でディスクとメモリを調べる。zip、gzip、tar でアーカイブをつくる。wget と curl で取ってくる。su と sudo で別のユーザーになり、ssh でログインし、scp でコピーし、apt でプログラムを入れ、systemctl でサービスの面倒を見て、vi でファイルを編集する。

まれで複雑なコマンドは、わざと外してあります。必要になったときは、検索やアシスタントで探したほうが速いからです。

マシンにあるもの

/var/log/test.log にあるログは、2秒ごとに書き足されるので、tail -f で追うものがあります。zip、圧縮するファイル、小さなフォルダーの木もあります。scratch というフォルダーは、消しても安全です。localhost には小さな Web サーバーがあり、wget と curl が取ってこられるので、どのレッスンもインターネットに頼りません。見つけて止める裏のプロセスは2つあり、1つは普通の kill を無視します。さらに、2つめのアカウント dev があり、devbox という名前で届きます。

2つめのマシンは、別のアカウントで使う同じ VM で、レッスンでもそう書いてあります。コマンドは本物のサーバーで使うものと同じです。鍵はあらかじめ用意してあるので、ボタンでパスワードなしに実行できます。

ブラウザーで動かす

VM ラボはモジュールのラボ課題として設定し、サンプルはラボのページにあります。マシンは小さく、CPU 1つ、メモリ 1 GB、ディスク 10 GB です。

  1. ラボを追加する. 自分が教えるモジュールで課題を追加し、「Ubuntu VM ラボ」のカードを選びます。ページにはcompose ファイルの代わりにマシンの短い記述が表示されます。
  2. サンプルから始める. ページには、そこから始められるサンプルのラボが用意されています。Everyday Linux commands を選びます。サンプルを使うとテキストが置き換わりますが、「元に戻す」で自分のテキストに戻せます。
  3. 公開して自分のコピーを起動する. 「公開」してから「起動」を押します。VM の初回起動時に、ラボの setup スクリプトが Ubuntu のアーカイブから小さなプログラムをいくつか入れ、ログ、アーカイブ、Web サーバー、2つのプロセスを用意します。所要時間は1分もかかりません。
  4. ターミナルを開く. ターミナルを開き、ホームフォルダーの README.md を読みます。マシンにあるものが一覧になっています。そのあと、5つのレッスンの最初を開きます。

このラボの基本レッスン

このラボで進める短いレッスンが5つあります。Everyday Linux 1: Move and make、Everyday Linux 2: Permissions and removing、Everyday Linux 3: Logs and processes、Everyday Linux 4: Archives, disk and the web、Everyday Linux 5: Users and other machines です。どれも単独で学べ、ホームフォルダーに移ることから始まり、きっかけの話、「できる」で書いた目標、キーワード、ウォームアップ、考えごとのあとのチェック、最後のチェックがあります。

実行ボタンは、コマンドを VM のターミナルに入力して、表示された結果を見せます。自然には終わらないコマンドや、途中で何かを聞いてくるコマンド(tail -f、su、vi など)には「自分で入力」と書いてあり、生徒がターミナルで打ちます。最後のレッスンは、手元に残せるカンニングペーパーで終わります。

授業での使い方

このラボは採点をしないので、Linux の最初の授業、復習、採点のあるラボ(Linux administration など)の前の練習に向いています。

  1. 配布する. ほかの課題と同じように、ラボとレッスンを配布します。期限を付けることもできます。各生徒には専用の VM が渡され、セッションをまたいで保持されます。
  2. 作業を見守る. レッスンの横にあるターミナルは生徒専用で、クラス一覧から、生徒が打っているあいだに見たり、操作を引き継いだりできます。
  3. 点数がほしいときは自分で採点する. このラボにはチェックスクリプトがありません。提出物がほしいときは、実行したコマンドの出力や、エラーの行を見つけたログのスクリーンショットなど、小さなものを求めてください。

GitHub の定義ファイル

このファイルはラボの定義のすべてで、プラットフォームが実行するものと同じテキストです。サイズ、setup スクリプト、README が入っています。コピーして、自分のファイルやサービスを足せば、自分のクラス向けのラボになります。

よくある質問

ssh と scp のためのもう1台のマシンはありますか?
別のアカウント dev で使う同じ VM で、devbox という名前で届きます。鍵はあらかじめ用意してあります。コマンドも、表示される結果も、本物のサーバーと同じです。マシンを2台にしたラボは、起動が大きくなります。
ファイルを消して、何かを壊すことはありませんか?
壊れるのは、自分のコピーだけです。レッスンで消すのは scratch というフォルダーで、マシンを壊してしまったときは、ラボを止めてもう一度起動すれば元に戻ります。
このラボにインターネットは必要ですか?
いいえ。ダウンロードは、ラボの中の小さな Web サーバーから行います。マシンが届くのは Ubuntu のアーカイブ、PyPI、npm、GitHub だけで、インターネットのほかには届きません。
毎日使う Linux コマンドのラボは自動で採点されますか?
いいえ。レッスンそのものが活動なので、チェックスクリプトはありません。小さな提出物を自分で用意するか、採点のある Linux administration のラボに進んでください。