サーバをメンテする時に便利な Linux コマンド 3つ
はじめに
サーバを運用したり環境を構築したりしていて「あれ。あのプロセスで吐いてるログどこだっけ・・」など困るときがあります。
そんなときに頼りになるかもしれないコマンドを 3つご紹介します。
@madeth 師匠に教えていただきました。
1. proc でプロセスが使っているファイルを見る
困ったこと
プロセスの吐くログのパスがどうしても分からない・・。
解決法 (編集 2014/09/10)
知りたいプロセスの 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 権限でファイルディスクリプタをのぞきます。
$ sudo ls -l /proc/3335/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 でファイルを検索する (2014年06月30日更新)
困ったこと
あの設定ファイルどこ置いたっけ・・。
解決法
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 といった派生ツールが色々あるようです。
おわりに
知りたいことをスマートに知れるように練度を高めたいなあ (感想)。