BLOG ブログ

エンジニアブログ

2016.09.23

WebサービスはLinuxで動いているのだから。~Bashのススメ~

オズビジョン中途3年目、制作開発チームの寺嶋です。

簡易自己紹介

入社して最初の年は基盤整備、それから現在まではPHPでフロントを作っています。
前職は、C言語とPosix Shellで、サーバサイドの処理をひたすら作っていました。
最近、学んだことのoutputとして、Qiitaで細々と投稿を始めました。
よければぜひフォローお願いします!

この記事を書くきっかけ

前職の主力はC言語だったのですが、オズビジョンに入社してから、Bashを利用する機会が非常に増えました。
(主プロダクトがPHPなので、Cの出番はほぼ無いという話)

Linuxコマンドライン上でもっと簡単にできることもあるのに…という光景を入社以降よく見てきたので、
折に触れてちょっとずつ社内布教をしてきました。
今回は同じような悩みを抱えている方の助けになればと思い、
その中でもファイル関係に絞って、ハピタスの開発・調査時によく使うBash(Linuxコマンドライン)技を共有します。

ログファイル関係

/var/log に行ったらファイルがいっぱいありすぎて、どれが最新だかわからないとき。

  • 最後に更新されたファイルがターミナルの一番下に表示されます。

    cd /var/log
    ls -ltr

/var/log/hogehoge を見ながら動作を確認したいとき。


tail -f /var/log/hogehoge

最新のログファイル名をいちいち取得するのがめんどくさいけど、見ながら動作確認をしたい。


cd /var/log
tail -f ls -1tr | tail -1

ファイルの情報取得

/var/www 配下で、あるタイミングより後に更新されたファイルってどれ?

  • 脆弱性でとあるWPサイトが改ざんされた可能性があったとき、あわてて使いました。
  • 例は、タイミングを「2016-01-02 12:34:56 より後の更新」としています。

    touch -t 201601021234.56 /tmp/base
    find /var/www -type f -newer /tmp/base

このファイルって何行あるの?

  • 処理した結果、会員IDが何人分抽出されたのか等を見るのに便利。

    wc -l < <対象ファイル>

ファイルの最初1行を見たい

  • 巨大なファイルだと、viewもつらいしcatもつらい、scpしてきてatomやsublimeもつらい
  • 最後1行の場合、headtailにします。

    head -1 <対象ファイル>

ファイルの簡易編集

空ファイルを作る

  • ファイルが存在していない場合、以下の2パターンどちらでも可能

    touch <ファイル名>
    : > <ファイル名>

カンマを改行に置換する

sed -e ‘s/,/\n/g’ < <変換前ファイル> > <変換後ファイル>

改行をカンマに置換する

  • 抽出結果からSQLのIN句を作るときなど便利
  • 前職では「改行をカンマに置換する」ようなことが必要になったことがあまりなかったので、trコマンドは転職してきてから初めて使った。便利

    tr '\n' ',' < <変換前ファイル> > <変換後ファイル>

おわりに

今回は、ハピタスの開発・調査時によく使うBash(Linuxコマンドライン)技を共有しました。
PHPやRubyといったメイン開発言語自体は勿論大切ですが、
Webサービスをサーバ上で動かしている以上、サーバ上での作業をまったく無くす、ということは難しいと考えています。
いざサーバ上で作業をする時に、メイン言語でスクリプトを書いて作業や調査に取り掛かるのではなく、
もっとライトにやる方法もあるのだ、という気付きを持っていただけたら、これ以上にうれしいことはありません。

また次回の投稿でお会いしましょう!
おしまい。

  • Happi+ 「ハピタス」とは?