はじめに
https://sadservers.com/ という Linuxの様々な問題を解けるサイトがあるのでこれをやってみる。
Linux 用の LeetCode
らしい。
環境
Windows 11 Professional
Chrome 131.0.6778.265(Official Build)
SadSeversにログイン
1. Sign upをする
https://sadservers.com/
上記のサイトにアクセスをし、 Sign up
をする。
2. Googleアカウントで登録
Google
アカウントを利用して登録をすることにした。
3. 登録完了
登録完了すると、下記のメッセージが表示される。
デフォルトは Freeアカウントなので1日に挑戦できる問題に制限があるようだ。
問題に挑戦をする
1. メニューよりScenariosを選択する
2. 問題の1にある Run
を選択する
3. サーバが構築されるまで 50秒ほど待つ
4. サーバが構築されていれば以下の表示となる
構築後、制限時間内に解かないとサーバが破棄されるようだ。
問題の解き方について
- 問題文を読む
- 解き方がわかれば ターミナルを開く
Check My Solution
で合っているかをチェックする。
問題の概要や説明
概要
SSH セッションを通じて一時的な Linux 仮想マシンに完全アクセスが可能です。シナリオによってはsudo
が制限される場合がありますが、必要な問題を解決してテストに合格することが求められます。仮想マシンは割り当てられた時間後に終了します。制約
サーバーからインターネットへのアクセスは制限されていますが、ローカル DNS は利用可能です。問題解決に無関係なサービス(ポート:2020
と:6767
で動作中)には干渉してはいけません。ヒントの利用
問題が分からなくなった場合、「次のヒント/解決策」ボタンで段階的なヒントを確認できます。ヒントを閉じて再度ボタンを押すと、新しい情報が表示されます。ソリューションの確認
問題を解決したら、「ソリューションの確認」ボタンでテストを実行し、結果が正しいと認定されると、サーバーが破棄されます。これにより、環境への負荷やコストが削減されます。諦めた場合
時間切れ前に問題解決を諦めた場合、「サーバーを破棄」ボタンで仮想マシンを手動でシャットダウンできます。利用規約
SadServers を利用することで、利用規約に同意したことになります。
問題1を解いてみる
問題1の内容
/var/log/bad.log
というログファイルに継続的に書き込みディスク容量をいっぱいにするプログラムがある。
これは不要になったので、このプログラムを終了させる。
という内容になる。
問題1の解決方法
※ネタバレになるので注意
解決方法
自分の解決方法は以下となる。
- まずは、
/var/log/bad.log
を書き込んでいるプロセスを確認したいので以下のコマンドを実行する。
ps aux | grep bad
結果
/usr/bin/python3 /home/admin/badlog.py
※今回は運よく引っかかったが、この調べ方だと特定できない可能性がある。
そのため、 lsof
で /var/log/bad.log
にファイル書き込みを行っているプロセスを特定する方法.
もしくは、fuser
を使うとよいだろう。
badlog.py
の中身を確認する。
cat /home/admin/badlog.py
中身を見た限りだと、 /var/log/bad.log
に日付+ランダムな文字列を書き込んでいるようなのでこのプログラムが対象であることがわかる。
- プロセスをkillする。
kill -9 [プロセスID]
プロセスIDがわかっているので、入力してプロセスをkill
する。
これで完了
Check My Solution
をクリックし、正解していれば下記が表示される。
一覧にも Solved
にチェックが入る。
参考
SadServers 解説
https://zenn.dev/kenma/articles/373d382bf4f1dbSadServers のご紹介
https://qiita.com/po_po_of/items/ea3634cc12887324dbeb
おわりに
Linuxサーバを実際にいじって様々なケースの問題が解けるのは面白いなと思った。
こういうケースって実務ではあるけど、趣味の範囲では発生しなかったりするものもあるのでLinux力はつきそうだ。
まだ1問しかやっていないけど、これからちょっとずつやっていこうかな。