ファイルは、ほかのマシンにある
アプリはデータセンターのサーバーで動いていて、必要な設定ファイルもそこにあります。そのマシンの前に座ることはできません。ネットワークを通ってログインし、見て、そのファイルを自分のマシンにコピーします。すべて1つのターミナルからです。
このレッスンが終わると
メモ
別のユーザーになり、ターミナルからほかのマシンを使うことができる。
キーワード
- ユーザー:マシンのアカウント。自分のファイルを持つ。
- sudo:1つのコマンドを、管理者として実行する。
- ssh:ネットワークを通って、ほかのマシンにログインする。
- scp:ほかのマシンへファイルをコピーする。
- サービス:裏で動き続けるプログラム。
ウォームアップ:すでに知っていること
メモ
頭の中で答えてみましょう。1. whoami は何を表示しますか。2. 全員がすべてのファイルを消せてはいけないのはなぜですか。3. プロセスとは何ですか。
はじめる前に
メモ
このレッスンの上にあるバーのラボを起動を押してください。このラボは、あなた専用の Ubuntu のマシンまるごとです。コンテナよりも、立ち上がるまで少し時間がかかります。実行ボタンを押すと、コマンドが順番にマシンのターミナルへ入力されます。「マシンはまだ起動中です」と出たら、数秒待ってからもう一度押してください。自分で入力と書かれたコマンドは、自然には終わらなかったり、途中で何かを聞いてきたりします。そのときは、バーのターミナルを開くを押して、自分で打ち込みます。
自分で入力:別のユーザーになる
ターミナルで su dev と打ち、パスワード DevLab2026 を入力します。パスワードを打っても、画面には何も出ません。whoami と打つと、dev と答えます。exit で戻ります。管理者の root になるには sudo su と打ちます。このラボではパスワードは聞かれず、プロンプトの終わりが # になります。sudo は、1つのコマンドだけを管理者として実行するときにも使います。
ほかのマシンへ:ssh と scp
ssh はほかのマシンでコマンドを実行し、scp はそのマシンへファイルをコピーします。ここでは、ほかのマシンは devbox で、このUbuntu のアカウント dev のことです。鍵があらかじめ用意してあるので、パスワードは聞かれません。最初の1回は、ssh がそのマシンを一覧に加えたと言います。使うコマンドは、本物のサーバーで使うものと同じです。
cdここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
echo "email Sam" > notes.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ssh dev@devbox whoamiここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
scp notes.txt dev@devbox:/home/devここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ssh dev@devbox ls /home/devここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
自分で入力:ログインして、見て、戻る
ターミナルで ssh dev@devbox と打ちます。プロンプトが変わります。いまはほかのマシンで、dev として打っています。pwd と ls を実行すると、コピーした notes.txt が見えます。exit で戻ります。
チェック
ヒント
ほかのマシンへファイルをコピーするコマンドはどれですか。コピー先はどう書きますか。答え: scp で、コピー先は ユーザー@マシン:フォルダー と書きます。
プログラムを入れ、サービスの面倒を見る
sudo apt install -y tree は、Ubuntu のアーカイブからプログラムを入れます。systemctl はサービスの面倒を見ます。status は様子を見せ、restart は止めてからもう一度始めます。--no-pager を付けると、全部が一度に表示されます。
sudo apt install -y treeここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
tree projectsここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
systemctl status lab-web --no-pagerここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
sudo systemctl restart lab-webここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
自分で入力:vi でファイルを編集する
サーバーによっては、vi しかありません。ターミナルで vi notes.txt と打ちます。まだ文字は打てません。a を押すと、書き足せるようになるので、1行打ちます。Esc を押すと、書き足すのをやめます。そのあと :wq と打って Enter を押すと、保存して終わります。変更を捨てて終わるときは、代わりに :q! と打ちます。cat notes.txt で確かめましょう。
よくある間違い
注意
管理者の root として作業するのが、ふつうのやり方だと思っている人がよくいます。そうではありません。root は何でも警告なしに消せるので、打ち間違いの被害がずっと大きくなります。ふだんは自分のアカウントで作業し、必要な1つのコマンドにだけ sudo を使いましょう。
最後のチェック
ヒント
前に戻らずに答えましょう。1. 1つのコマンドだけを管理者として実行するコマンドはどれですか。2. ssh のセッションから出るには、どうしますか。3. vi で保存して終わるには、どうしますか。答え: sudo。exit。Esc を押してから :wq。
カンニングペーパー
動く: pwd、ls -la、cd、cd -、~。ファイル: mkdir -p、touch、echo >、cat、rm、rm -rf(気をつける)、chmod +x。 読む: tail -n、tail -f、grep、|。探す: find / -name 'x' 2>/dev/null、which、ps -ef | grep x、kill、そのあと kill -9。 マシン: df -h、du -sh *、free -h。アーカイブ: unzip、gzip、gunzip、tar -czf、tar -xzf。Web: wget、curl -s。 人: whoami、su、sudo、ssh ユーザー@ホスト、scp ファイル ユーザー@ホスト:フォルダー。ソフトウェア: sudo apt install -y、systemctl status|restart。エディター: vi(a、Esc、:wq、:q!)。
先生へ
ヒント
このレッスンは VM ラボで進めます。生徒一人ひとりに専用の Ubuntu マシンがあり、実行ボタンはそのターミナルに入力して、表示された結果を見せます。学習のポイント:1. su と sudo で、しばらくのあいだ別の人になります。2. ssh と scp でほかのマシンに届きます。3. apt と systemctl でソフトウェアを入れ、面倒を見ます。 よくある間違い:ずっと root で作業すること。 必要なもの:ラボとブラウザー。ヒント:30のコマンドのうち、付せんに書いておきたいものをクラスで言ってもらいましょう。 このラボにはチェックがなく、採点はしません。提出物がほしいときは、先生が自分で用意してください。