0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SadServers #1

Posted at

SadServers #1

Scenario:"Saint John": what is writing to this log file?(このログファイルは何が書かれていますか?)

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に書き込み続け、ディスクをいっぱいにしている。もう必要ないので終了させてください。)


答えにたどり着くまで

/var/log/bad.log

↑そのファイルを開いているプロセスを探す

$ lsof /var/log/bad.log 
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
badlog.py 585 admin    3w   REG  259,1    35833 265802 /var/log/bad.log
$ 

lsofコマンドとは

プロセスが開いているファイルを表示するコマンド
サーバーで特定のポート番号を待ち受けているかどうか、指定ファイルは誰が読み込んでいるのかを調べたいときに役立つコマンド

特定のファイルを開いているプロセスを特定するとPIDが585だった。

badlog.py 585 admin    3w   REG  259,1    35833 265802 /var/log/bad.log

さっきのPIDからプロセス名と情報を見てみる

$ ps aux | grep 585
admin        585  0.0  1.7  12508  8192 ?        S    10:54   0:00 /usr/bin/python3 /home/admin/badlog.py
admin        889  0.0  0.1   5264   640 pts/1    S<+  11:00   0:00 grep 585
$

ps aux | grep は、OS上で動いてるプロセスを確認するときに使用する

そもそもなんでps aux|grep と叩くとプロセスIDとかの出力結果出るか調べる

ps aux

ps単体がLinux上で動いてるプロセスを確認するコマンドでもps単体であんまり使わんからps auxで覚えとこ。

grep

hoge.txt
hoge
itigo
hogehoge
oishii

みたいなファイルがあってgrep hoge hoge.txt打つと

grep hoge hoge.txt
hoge #検索結果1
hogehoge #検索結果2
  • 第1引数のhogeが検索単語
  • 第2引数のhoge.txtが後述する標準入力
  • 出力結果が後述する標準出力

パイプライン(|)の意味

パイプラインというのは、前のコマンドの標準出力をそのまま次のコマンドの標準入力として渡す仕組みのこと

ps aux|grep hogeコマンドを叩くとすると

  1. ps auxでOS上で実行中のプロセスが一覧として表示され、標準出力される
  2. grep hogeの標準入力として、1.で標準出力されたプロセスの一覧が渡される
  3. 結果として、OS上で実行中のプロセスの中で、nodeという文字列を含んだプロセスが標準出力としてコマンドライン上に表示される

$ ps aux | grep 585
admin        585  0.0  1.7  12508  8192 ?        S    10:54   0:00 /usr/bin/python3 /home/admin/badlog.py
admin        889  0.0  0.1   5264   640 pts/1    S<+  11:00   0:00 grep 585
$

左から

  • USER:プロセスの所有ユーザー
  • PID:プロセス番号
  • %CPU:CPUの占有率
  • %MEM:実メモリでの占有率
  • VSZ:仮想分も含めた使用サイズ(Kバイト)
  • RSS:実メモリ上の使用サイズ(Kバイト)
  • TT:端末名
  • STAT:プロセスの状態
    • R:稼動中
    • S:一時停止中
    • D:停止不可能で一時停止
    • T:終了処理中
    • Z:ゾンビプロセス(すでに実体は無い)
    • W:実メモリ上に無くて,スワップアウトしている
    • N:nice値
  • STARTED:プロセスの開始時刻
  • TIME:プロセスの総実行時間
  • COMMAND:実行コマンド名とパス(シェル表記の場合もあり)
admin        585  0.0  1.7  12508  8192 ?        S    10:54   0:00 /usr/bin/python3 /home/admin/badlog.py 

kill 585してやることでログ・ファイルの書き込みが停止して、ディスクの容量の消費も止まる。

まとめ

SREは障害対応のスキルもいるのでこれからSadSeversの問題解いて行って勉強していく。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?