SadSeversの問題を解く 1

はじめに

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をする。

create-account-01

2. Googleアカウントで登録

Googleアカウントを利用して登録をすることにした。

create-account-02

3. 登録完了

登録完了すると、下記のメッセージが表示される。
デフォルトは Freeアカウントなので1日に挑戦できる問題に制限があるようだ。

create-account-02

問題に挑戦をする

1. メニューよりScenariosを選択する

try-scenario-01

2. 問題の1にある Run を選択する

try-scenario-02

3. サーバが構築されるまで 50秒ほど待つ

try-scenario-03

4. サーバが構築されていれば以下の表示となる

try-scenario-04

構築後、制限時間内に解かないとサーバが破棄されるようだ。

問題の解き方について

  1. 問題文を読む
  2. 解き方がわかれば ターミナルを開く
  3. Check My Solution で合っているかをチェックする。

問題の概要や説明

  1. 概要
    SSH セッションを通じて一時的な Linux 仮想マシンに完全アクセスが可能です。シナリオによっては sudo が制限される場合がありますが、必要な問題を解決してテストに合格することが求められます。仮想マシンは割り当てられた時間後に終了します。

  2. 制約
    サーバーからインターネットへのアクセスは制限されていますが、ローカル DNS は利用可能です。問題解決に無関係なサービス(ポート :2020:6767 で動作中)には干渉してはいけません。

  3. ヒントの利用
    問題が分からなくなった場合、「次のヒント/解決策」ボタンで段階的なヒントを確認できます。ヒントを閉じて再度ボタンを押すと、新しい情報が表示されます。

  4. ソリューションの確認
    問題を解決したら、「ソリューションの確認」ボタンでテストを実行し、結果が正しいと認定されると、サーバーが破棄されます。これにより、環境への負荷やコストが削減されます。

  5. 諦めた場合
    時間切れ前に問題解決を諦めた場合、「サーバーを破棄」ボタンで仮想マシンを手動でシャットダウンできます。

  6. 利用規約
    SadServers を利用することで、利用規約に同意したことになります。

問題1を解いてみる

問題1の内容

/var/log/bad.log というログファイルに継続的に書き込みディスク容量をいっぱいにするプログラムがある。
これは不要になったので、このプログラムを終了させる。

という内容になる。

問題1の解決方法

※ネタバレになるので注意

解決方法

自分の解決方法は以下となる。

  1. まずは、/var/log/bad.log を書き込んでいるプロセスを確認したいので以下のコマンドを実行する。
ps aux | grep bad

結果

/usr/bin/python3 /home/admin/badlog.py

※今回は運よく引っかかったが、この調べ方だと特定できない可能性がある。
そのため、 lsof/var/log/bad.log にファイル書き込みを行っているプロセスを特定する方法.
もしくは、fuserを使うとよいだろう。

  1. badlog.py の中身を確認する。
cat /home/admin/badlog.py

中身を見た限りだと、 /var/log/bad.log に日付+ランダムな文字列を書き込んでいるようなのでこのプログラムが対象であることがわかる。

  1. プロセスをkillする。
kill -9 [プロセスID]

プロセスIDがわかっているので、入力してプロセスをkillする。

これで完了

solution-01

Check My Solution をクリックし、正解していれば下記が表示される。

solution-02

一覧にも Solvedにチェックが入る。

solution-03

参考

おわりに

Linuxサーバを実際にいじって様々なケースの問題が解けるのは面白いなと思った。
こういうケースって実務ではあるけど、趣味の範囲では発生しなかったりするものもあるのでLinux力はつきそうだ。
まだ1問しかやっていないけど、これからちょっとずつやっていこうかな。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。