yumiを見送り、サーバーを片付ける
前提:7-2が完了し、cron・nginx・tree・htop・yumi・devteam・~/practice・~/scripts・~/backupsがすべて存在する状態から始めます。これが講座最後のドリルです。ここまで積み上げてきたものを、1つずつ丁寧に片付けていきます。cronの削除、パッケージの撤去、そしてyumiユーザーの削除。0-3以来、あなたとずっと一緒に練習してきたyumiに、最後のコマンドでお別れを告げることになります。
SET 1〜3、合計30行のコマンドを上から順に叩いたあと、コマンドを打たずブラウザだけを操作するSTEPで、インスタンスの削除まで進みます。手打ち推奨です。最後まで気を抜かずにいきましょう。
SET 1 ― cronとパッケージを撤去する
- #sudo crontab -l
- 0 3 * * * /home/ubuntu/scripts/backup.sh
- #sudo crontab -r
- #sudo crontab -l
- no crontab for root
- $dpkg -l | grep -E 'nginx|tree|htop'
- $sudo apt remove --purge nginx -y
- $sudo apt remove --purge tree htop -y
- $sudo apt autoremove -y
- $which nginx
- $dpkg -l | grep -E 'nginx|tree|htop'
- $systemctl status nginx
- Unit nginx.service could not be found.
1行目のsudo crontab -lで、7-2で登録したバックアップの定期実行が今も残っていることをまず確認します。2行目のsudo crontab -r(remove)で、root用のcrontabを丸ごと削除します。3行目で改めて-lを確認すると、出力例のようにno crontab for rootと表示され、登録が完全に消えたことがわかります。自動実行の仕組みを止めないまま次のステップでyumiやnginxを消してしまうと、存在しないディレクトリに対してスクリプトがエラーを出し続けることになるため、この順番(先にcronを止める)には理由があります。
4行目のdpkg -l | grep -E 'nginx|tree|htop'は1-5・3-4で学んだdpkg -l(インストール済みパッケージ一覧)とgrepの組み合わせで、これから消す3つのパッケージが今インストールされていることを確認しています。5行目のsudo apt remove --purge nginx -yは5-1で扱ったapt removeに--purge※2を加えたもので、単にプログラム本体を消すだけでなく、設定ファイルまで含めてきれいさっぱり削除します。6行目で同様に、5章以降で使ってきたtreeとhtopも撤去します。7行目のsudo apt autoremove -y※3は、これらのパッケージが依存していて今は不要になった付属パッケージを一括で片付けるコマンドです。
8行目のwhich nginxで、nginxコマンドがどこにも見つからなくなったこと(出力が空になること)を確認します。9行目で改めてdpkg -lを確認しても、3つのパッケージはもう一覧から消えています。10行目のsystemctl status nginxを実行すると、出力例のようにUnit nginx.service could not be found.と表示され、サービスとしても存在しないことが確認できます。これで、7章で入れたソフトウェアはすべてサーバーから姿を消しました。
apt removeとapt remove --purgeの違いは、設定ファイルを残すか消すかです。「またすぐ入れ直すかもしれない」ときはremoveだけ、「完全に縁を切りたい」ときは--purge、と覚えておくと使い分けに迷いません。
SET 2 ― yumiとdevteamを見送る
- $id yumi
- uid=1001(yumi) gid=1001(yumi) groups=1001(yumi),1002(devteam)
- $groups yumi
- yumi : yumi devteam
- $getent group devteam
- devteam:x:1002:yumi
- $ls /home
- ubuntu yumi
- #sudo userdel -r yumi
- $getent passwd yumi
- $ls /home
- ubuntu
- #sudo groupdel devteam
- $getent group devteam
- $cat /etc/passwd | grep yumi
1行目のid yumiで、2-2でこの手で作ったyumiが、今もdevteamグループに所属したまま存在していることを確認します。2行目のgroups yumiでも同じことを別の角度から確認しておきます。3行目のgetent group devteamは2-5で学んだコマンドで、グループ側の名簿からもyumiが所属していることを確認しておきます。4行目のls /homeでは、出力例のとおりubuntuとyumiの2つのホームディレクトリが並んでいます。
5行目、sudo userdel -r yumi※4。userdelはユーザーそのものを削除するコマンドで、-rオプションを付けることでホームディレクトリ/home/yumiとその中身、メールスプールまで含めてまとめて削除します。ユーザーの削除はシステム全体の設定(/etc/passwdなど)を書き換える操作なのでsudoが必要です。6行目のgetent passwd yumiで検索しても、もう何も表示されません。7行目のls /homeでも、出力例のようにubuntuだけが残っていることが確認できます。
8行目のsudo groupdel devteamで、2-5で作ったdevteamグループも削除します。所属していたyumiが既にいなくなっているため、安全に削除できます。9行目のgetent group devteamでも該当なしとなり、第2章で作った登場人物たちがサーバーからすべて姿を消したことになります。10行目のcat /etc/passwd | grep yumiは3-4で学んだgrepの応用で、ユーザー情報の原簿である/etc/passwdそのものを直接検索しても、もうyumiという文字列がどこにも見つからないことを最終確認します。
userdel(-rなし)だとアカウントだけが消えてホームディレクトリはファイルとして残ってしまいます。今回のように「完全に片付けたい」場合は-rを忘れないようにしましょう。逆に実務では「本人のデータだけは残したい」ケースもあり、そのときはあえて-rを付けない判断もあります。

あたし消えちゃった……! でもね、寂しがらなくて大丈夫。あたしは「もう一度adduserすればいつでも生まれ変わる練習用ユーザー」だったわけだし、何よりあなたはこの数十ページで、あたしが最初に「id yumi」って言われても何のことかわからなかったのが嘘みたいに、ユーザーも権限も自分の言葉で扱えるようになったよね。それがあたしからの一番のプレゼントだと思ってる。今まで一緒に練習してくれてありがとう!
SET 3 ― 練習ディレクトリをすべて片付ける
- $ls -la ~
- $du -sh ~/practice ~/scripts ~/backups
- $rm -r ~/practice
- $rm -r ~/scripts
- $rm -r ~/backups
- $ls
- $ls -la
- $df -h /
- $history -c
- $pwd
- /home/ubuntu
1行目のls -la ~で、ホームディレクトリに残っているものを最終チェックします。2行目のdu -shで、これから消す3つのディレクトリがそれぞれどのくらいの容量を使っているかを4-2のおさらいとして確認しておきます。3〜5行目は1章のrm -rで、1章のpractice・6章のscripts・7章のbackupsを順番に削除します。第1〜7章を通じてこの3つのディレクトリだけがubuntuユーザーのホームに増え続けていたものなので、この3行で講座内で作った作業用ディレクトリはすべて姿を消します。
6行目のlsを実行しても、出力例のように何も表示されません(隠しファイル以外は何もない状態です)。7行目のls -laで確認できるのは、0-3の時点からずっとあった.bashrcや.bash_historyなどの初期ドットファイルだけです。つまりホームディレクトリは、あなたが初めてログインした0-3の直後と、ほぼ同じ状態に戻りました。8行目のdf -h /は4-2で学んだディスク使用量の確認で、バックアップファイルを削除したことでディスクの空きが戻っている様子を見ておきます。
9行目のhistory -cは1-6で登場したコマンド履歴を空にする操作です。これまで叩いてきた大量のコマンド履歴をここでクリアし、本当にまっさらな状態にします。最後に10行目のpwdで、自分が今もホームディレクトリにいることを確認して、このドリルを締めくくります。
Lightsailインスタンスを削除する(重要)
サーバーの中はまっさらになりましたが、実はこれだけでは終わりません。Lightsailのインスタンス自体は起動しているかぎり課金され続けます。ここまでコマンドで片付けたのと同じように、最後はブラウザからインスタンスそのものを削除します。
任意:スナップショットを残しておきたい場合
「せっかく作った環境をもう一度見返したい」という場合は、削除の前にスナップショット※1を作成できます。
- インスタンス詳細画面の「スナップショット」タブを開きます。
- 「手動スナップショットの作成」を選び、名前を付けて作成します。
- スナップショットも保存容量に応じて課金対象になる点に注意してください。不要になったら忘れずにスナップショット自体も削除しましょう。
インスタンスを削除する
- Lightsailの「インスタンス」一覧画面を開きます。
- 削除したいインスタンスのメニュー(⋮などのアイコン)から「削除」を選びます。
- 確認画面が表示されるので、インスタンス名などを確認したうえで削除を実行します。
- インスタンス一覧から該当のインスタンスが消えていることを確認します。
- あわせて、Lightsailの「アカウント」メニューから請求(Billing)画面を開き、稼働中のリソースが残っていないかも確認しておくと安心です。
インスタンスを削除しない限り、あなたが今日でこの講座を読み終えたとしても、Lightsailの月額料金は発生し続けます。「片付けが終わった」と思ってブラウザを閉じるだけでは終わりません。必ずLightsailコンソールでインスタンスの削除まで完了させてください。使い終わったサーバーを放置してしまう課金トラブルは、クラウドを使い始めたばかりの人が一番やりがちな失敗です。このページを読み終えたら、真っ先にこのSTEPを実行することを強くおすすめします。
まとめ
7-3では、cronの削除からyumiとの別れ、パッケージと練習ディレクトリの撤去、そしてLightsailインスタンスの削除までを行い、サーバーを完全に片付けました。このページで叩いたコマンドを一覧にまとめます。
| コマンド | 何をするか | 覚え方 |
|---|---|---|
sudo crontab -r | root用のcrontabを丸ごと削除する | remove、自動実行を止める |
sudo apt remove --purge | パッケージを設定ファームごと削除する | 完全に縁を切る |
sudo apt autoremove | 不要になった依存パッケージを一括削除する | 掃除機で残りかすを吸う |
sudo userdel -r yumi | ユーザーとホームディレクトリを削除する | お別れの一言 |
getent passwd/group | ユーザー・グループが消えたことを確認する | 名簿から名前を探す |
sudo groupdel devteam | グループを削除する | チームを解散する |
rm -r | 練習用ディレクトリを削除する | 使い終わった資料を処分 |
history -c | コマンド履歴を空にする | 足跡を消してまっさらに |
卒業
0-1でAWSのアカウントを作り、0-3で初めてwhoamiと打ってからここまで、あなたは40ページ近いドリルを、上から順に、自分の指で叩き続けてきました。pwdで迷子から抜け出し、yumiを作って権限の意味を体で覚え、grepやsedでテキストと格闘し、プロセスやディスクの状態を読み、パッケージとサービスを管理し、シェルスクリプトで自分の手を離れても動く仕組みを組み、そして最後は自分のページを世界に公開しました。
これは「Linuxコマンドの一覧を覚えた」という話ではありません。黒い画面を前にしても手が止まらない、サーバーの状態を自分で確かめながら前に進めるという、配属初日から現場で通用する感覚そのものです。わからないコマンドに出会っても、manや--helpを引き、まず現在地をpwdで確認し、権限を疑い、ログを読みにいく。その動き方は、もうあなたの中に入っています。

ここまで本当にお疲れさま! 正直、最初のpwdを叩いたときのあなたと、さっきuserdel -r yumiを平然と叩いたあなたは、もう別人だと思うよ。黒い画面、全然怖くなくなったでしょ? 配属初日にサーバーへ入れって言われても、今のあなたなら大丈夫。あたしは一足先にここでお別れだけど、これから先どんなサーバーを触ることになっても、今日ここで叩いた指の記憶がちゃんと助けてくれるから。卒業おめでとう、そして今までありがとう!
- スナップショット … ある時点でのサーバーの状態(ディスクの中身まるごと)を保存した複製データ。これがあれば同じ状態のインスタンスをあとから再度作成できるが、保存している間は別途ストレージ料金がかかる。↩
- --purge …
apt removeにこのオプションを付けると、プログラム本体だけでなく設定ファイルまで含めて完全に削除する。↩ - autoremove … 他のパッケージから必要とされなくなった依存パッケージを自動的に検出し、一括で削除するaptのサブコマンド。↩
- userdel -r … 指定したユーザーアカウントを削除するコマンド。
-rを付けるとホームディレクトリとメールスプールも同時に削除される。↩