こんにちは、しょうぞうです。
本日は、SadServersというサーバーの障害を解決するウェブサイトを通してLinuxの勉強をしていきたいと思います。
実際にやってみましたが超実践的な問題でこれは業務で役立ちそうだなぁと思うような問題でした!
Q1:”Saint John”: what is writing to this log file?
日本語訳:
シナリオ: “Saint John”: このログファイルに書き込んでいるのは何ですか?
レベル: 簡単
タイプ: 修正
タグ:
説明: 開発者がテストプログラムを作成し、それが/var/log/bad.logに継続的に書き込んでディスクをいっぱいにしています。tail -f /var/log/bad.logを使って確認できます。このプログラムはもう必要ありません。それを見つけて終了させてください。
テスト: ログファイルのサイズが変化しない(ログファイルの変化率より大きな時間間隔内で)。
“Check My Solution”ボタンは、/home/admin/agent/check.shスクリプトを実行します。このスクリプトを確認して実行できます。
解決時間: 10分
Runボタンを押して、Open the Server Terminal in a New Windowを押すとターミナルが出てきます。
とりあえず、tail -f /var/log/bad.logをやってみるとプロセスが連続してログに書かれていました。
このプログラムを探して止めるというのが今回の課題のようです。
問題難易度Easyなのにもかかわらず、全くわからなかったのでヒントを見ました。
ヒントには、ps auxfを使用したりlsofを使用すると良いと書かれていました。
ps aufを打ってもlsofを打ってもよくわからずもう一回ヒントを見ると、fuserコマンド
を使うと良いと書かれていたので実際に打つと・・・
bad.logのプロセスIDが表示されました!
実際にプロセスID:587をlsofコマンドで見に行くと、明らかに実行しているとわかるプログラムが見つかりました。
なので対象のプロセスIDを削除して、問題文に書かれているシェルスクリプト(問題が解決したら流すもの)を実行すると「OK」という文字が表示されました!
ターミナルからサイトに戻ってCheck My Solutionをクリックすると・・・
無事に解決することができました!
使用したコマンドの復習
ps auf
‘a’: 端末に関連のない、全てのプロセス・ユーザーのプロセスを表示する
‘u’:プロセスの詳細情報を表示する
‘f’:プロセス情報をツリー形式で表示する
lsof
lsofコマンドは”List Open Files”の省略で、実行すると開いているファイルに関連する情報が表示される
自分は、ただ単にlsofコマンドを打っていたのですがその場合だと全てのプロセスについて表示されてしまうそうなので使い方が間違っていました(参考サイト)
lsof /var/log/bad.logみたいな使い方をヒントとして出していたのでしょう。
fuser
指定されたファイル・ディレクトリ・またはソケットを使用しているプロセスを表示するコマンド。
ファイルシステムのトラブルシューティング・特定のリソースを使用しているプロセスを特定したりする際に役立つ。
まとめ
今回は、SadServersで第一問目を解きました。
問題難易度Easyながらインフラ初心者には普通にわからなかったです。
やってみて思ったのがこれは実践的な問題なので業務に役立つと感じたことです。
2問目以降もやっていきたいなと思います。
以上、もしLinuxの勉強を遊びながらやりたいと思った人はやってみてください!
コメント