🐙

[SadServers] 解説 "Saint John": what is writing to this log file?

2022/11/01に公開

"Saint John": what is writing to this log file?

SadServersの問題の解説です。 URLは、https://sadservers.com/newserver/saint-john

SadServers って何? って人は、 SadServers解説 を見てください。
一言でいうと、LeetCode (コーディング問題集) の Linuxサーバ設定版のようなものです。

問題

Level: Easy

Description: A developer created a testing program that is continuously writing to a log file /var/log/bad.log and filling up disk. You can check for example with tail -f /var/log/bad.log.
This program is no longer needed. Find it and terminate it.

ある開発者が作成したテストプログラムが、ログファイル /var/log/bad.log に書き込み続け、ディスクを一杯にしています。例えば、tail -f /var/log/bad.logで確認できます。
このプログラムはもう必要ありません。見つけて終了させてください。

解き方

/var/log/bad.log にログが出力され続けています。 ですが、どのプログラムが、/var/log/bad.logをログを書き込んでいるのかわかりません。そのプログラムを見つけて、停止させます。

# lsof コマンドで、/var/log/bad.log ファイルを開いているプロセスを探す

ubuntu@ip-172-31-32-108:/$ lsof /var/log/bad.log 
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
badlog.py 601 ubuntu    3w   REG  259,1    10323 67701 /var/log/bad.log

# PID 601の badlog.py というプロセスということがわかるので、 PID 601を殺す

kill -9 601

# tail -f を実行し、ログが増えないことを確認する。
tail -f /var/log/bad.log

コマンド解説

  • lsof: オープンしているファイルのプロセスを表示します。
  • kill: プロセスを終了します。 -9 で SIGKILLを送って、強制終了します。

Discussion