bekkou68の日記

開発しているサービス, IT技術, 英語など。

〜英語を楽しく学びたい全ての人へ〜
問題です。これは何でしょう? 【答えを見る】
preview
pre- + view
→ 前もって + 見る
→ 何かを前もって見る
→ 【名】下見, 試写会, プレビュー
語源のつぶやきをおとどけします:
iPhoneアプリができました!: 『おもしろ語源』

サーバをメンテする時に便利な Linux コマンド 3つ

はじめに

サーバを運用したり環境を構築したりしていて「あれ。あのプロセスで吐いてるログどこだっけ・・」など困るときがあります。
そんなときに頼りになるかもしれないコマンドを 3つご紹介します。
@madeth 師匠に教えていただきました。

1. proc でプロセスが使っているファイルを見る

困ったこと

プロセスの吐くログのパスがどうしても分からない・・。

解決法

知りたいプロセスの ID を調べます。

$ ps aux | grep unicorn
deploy    3335  xxx  xxx xxx xxx X       XX   15:14   0:07 unicorn master -c /var/www/myproject/unicorn/staging.rb -E staging -D

プロセスID (この場合は 3335) をもとに root で /proc/ を見ます。

$ sudo su -
$ cd /proc/3335

ファイルディスクリプタをのぞけます。

$ ls -l fd
-wx------ 1 deploy deploy 64 Jun 26 16:56 X -> /hard/to/find/log/unicorn.log
-wx------ 1 deploy deploy 64 Jun 26 16:56 Y -> /hard/to/find/log/unicorn_err.log
...

おお。こんなところにログがありました!

他にもソケット・パイプ・実行ファイルといった情報を見られるようです。

2. mlocate でファイルを検索する

困ったこと

あの設定ファイルどこ置いたっけ・・。

解決法

mlocate を使います。インデックスを元に高速でファイルを検索するツールです。別途インストールが必要です。

$ sudo yum -y install mlocate
$ sudo updatedb # インデックスを作成。ファイル構成が変わったら都度実行するのを忘れずに!

検索したいファイル名でコマンドを実行してみましょう。

$ locate nginx.conf
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/this/path/is/abnormal/nginx.conf

おお。いろいろな場所から見つけることができました。

パスで絞り込むこともできます。

$ locate "/nginx/nginx.conf"
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default

3. プロセスに関する情報をいろいろ知る

困ったこと

プロセスの情報をスマートに知りたい。

解決法

top コマンドの便利な使い方をご紹介します。

  • ユーザで絞り込みたい: u を打ってユーザ名を入力すると絞り込める
  • コマンドラインを見たい: c を打つ
  • CPUを喰ってる順に並べ替えたい: Shift+P を打つ
  • メモリを喰ってる順に並べ替えたい: Shift+M を打つ
  • コア数を確認したい: 1 を打つ

他のオプションが気になる方はこちらをご覧ください。

top には htop といった派生ツールが色々あるようです。

おわりに

知りたいことをスマートに知れるように練度を高めたいなあ (感想)。