毎日使う 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 です。
- ラボを追加する. 自分が教えるモジュールで課題を追加し、「Ubuntu VM ラボ」のカードを選びます。ページにはcompose ファイルの代わりにマシンの短い記述が表示されます。
- サンプルから始める. ページには、そこから始められるサンプルのラボが用意されています。Everyday Linux commands を選びます。サンプルを使うとテキストが置き換わりますが、「元に戻す」で自分のテキストに戻せます。
- 公開して自分のコピーを起動する. 「公開」してから「起動」を押します。VM の初回起動時に、ラボの setup スクリプトが Ubuntu のアーカイブから小さなプログラムをいくつか入れ、ログ、アーカイブ、Web サーバー、2つのプロセスを用意します。所要時間は1分もかかりません。
- ターミナルを開く. ターミナルを開き、ホームフォルダーの 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 など)の前の練習に向いています。
- 配布する. ほかの課題と同じように、ラボとレッスンを配布します。期限を付けることもできます。各生徒には専用の VM が渡され、セッションをまたいで保持されます。
- 作業を見守る. レッスンの横にあるターミナルは生徒専用で、クラス一覧から、生徒が打っているあいだに見たり、操作を引き継いだりできます。
- 点数がほしいときは自分で採点する. このラボにはチェックスクリプトがありません。提出物がほしいときは、実行したコマンドの出力や、エラーの行を見つけたログのスクリーンショットなど、小さなものを求めてください。
GitHub の定義ファイル
このファイルはラボの定義のすべてで、プラットフォームが実行するものと同じテキストです。サイズ、setup スクリプト、README が入っています。コピーして、自分のファイルやサービスを足せば、自分のクラス向けのラボになります。
よくある質問
- ssh と scp のためのもう1台のマシンはありますか?
- 別のアカウント dev で使う同じ VM で、devbox という名前で届きます。鍵はあらかじめ用意してあります。コマンドも、表示される結果も、本物のサーバーと同じです。マシンを2台にしたラボは、起動が大きくなります。
- ファイルを消して、何かを壊すことはありませんか?
- 壊れるのは、自分のコピーだけです。レッスンで消すのは scratch というフォルダーで、マシンを壊してしまったときは、ラボを止めてもう一度起動すれば元に戻ります。
- このラボにインターネットは必要ですか?
- いいえ。ダウンロードは、ラボの中の小さな Web サーバーから行います。マシンが届くのは Ubuntu のアーカイブ、PyPI、npm、GitHub だけで、インターネットのほかには届きません。
- 毎日使う Linux コマンドのラボは自動で採点されますか?
- いいえ。レッスンそのものが活動なので、チェックスクリプトはありません。小さな提出物を自分で用意するか、採点のある Linux administration のラボに進んでください。