チャットでコマンドをやり取りして惨劇が起きかけた話


はじめに

サーバ管理をしていて少しヒヤッとしたことがあったので
ほんとに恥ずかしいし、バカバカしい話なのですが自分への戒めのために記事を書きました。

TLDL;

  • 当たり前だが、チャット上でコードスニペットやコマンドを送るときはちゃんと `(バッククオート)を使おう。でないと、記号がMarkdownと認識され大変なことになるかも。 ※記法によっては~(チルダ)でもOK
  • 当たり前だが、実行するOSのコマンドは実行前にしっかり内容を確認しよう
  • 当たり前だが、ログローテーションはしよう

起きた出来事

部内で利用している、Jiraサーバが起動しなくなったので2人で原因調査をしたところ
Jiraのログファイルの肥大化によってストレージを食いつぶしていました。

そこで、Jiraのログ内容を見てみるとログローテーションがしっかりされておらず
ファイルの圧縮や削除がされていませんでした。

lsの結果
[root@jira ~]# ls -ahl /opt/atlassian/jira/logs/
total 59G
drwx------  2 jira root  68K Jan 24 03:45 .
drwxr-xr-x 15 root root 4.0K Feb 25  2016 ..
-rw-r--r--  1 jira jira 1.2K Jul  1  2019 catalina.2019-07-01.log
-rw-r--r--  1 jira jira 3.8K Jul  2  2019 catalina.2019-07-02.log
-rw-r--r--  1 jira jira 1.5K Jul  5  2019 catalina.2019-07-05.log
-rw-r--r--  1 jira jira 1.5K Jul  5  2019 catalina.2019-07-05.log
-rw-r--r--  1 jira jira    0 Jan 24 03:45 catalina.out

※ログは一部のみ表示

そこで

  1. 暫定対応として、溜まったログファイルの内「30日前以前に作成されたcatalina.xxxxx.logファイルの削除」
  2. 本格対応として、ログローテーションの導入(ファイルの圧縮・削除)

を行うことにしました。

1の対処を行うときにヒヤッとすることが起きました。

打ちたかったコマンド
[root@jira ~]# find /opt/atlassian/jira/logs/*.*.* -mtime +30 | xargs rm

/opt/atlassian/jira/logs/配下の30日前以前に作成された(厳密には変更された)
*.*.*(e.g. catalina.2019-07-05.logなど)の削除。

一緒に作業していたメンバーが対象ファイルを削除するコマンドを、チャットで書いて送ってくれたのですが

となっていました。
コマンド打つ前に気付きましたが、このまま打つと/opt/atlassian/jira/logs/の上位ディレクトリを吹き飛ばして大変なことになるとこでした...

何が起きたのか

チャット上で

find /opt/atlassian/jira/logs/*.*.* -mtime +30 | xargs rm

を打つと、*.*.*の前半の*.*部分がMarkdownの強調と判定されて、斜体になっていました。

ただ、

通常のドット 斜体のドット
. .

ん??
間違い探し??

ドットはパット見で斜体かどうかもわかりませんw

ちゃんとコマンド見たから良かったものの、脳死してコマンド流していたらどうなっていたか...
※まぁ、脳死してコマンド流すことはないですが

おわりに

コードやコマンドにはMarkdownでも利用される様々な記号が登場します。

チャット上でコードスニペットやコマンドをサクッと送るシーンで
しっかりと、`(バッククオート)を使わないといずれ大変なことになるかもしれないなーと
実感しました。
~(チルダ)など別の記法もありますが。