ある日いきなりサーバー管理者に任命されたら

2009年7月21日(火)
sanonosa

サーバー上で稼働しているサービスの種類を調べる方法

 前ページにて「実際にサーバーにログインしてみてどんなサービスやバッチが動いているのかまで確認していく」と書きましたが、このページではその具体的な方法を簡単に記してみたいと思います(なおここでは誌面の都合上、OSをLinuxに限定します)。

 サーバーがネットワークを介して提供しているサービスの種類を調べるにはどうしたらよいでしょうか。この場合はTCP/UDPのListenポートを見ます。

# netstat -lnp

 と打つと

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address State    PID/Program name
tcp      0     0 0.0.0.0:3306   0.0.0.0:*      LISTEN   31074/mysqld
tcp      0     0  :::22        :::*          LISTEN   2284/sshd
tcp      0     0  :::80        :::*          LISTEN   26966/httpd
tcp      0     0  :::443        :::*          LISTEN   26966/httpd

 のように返ってきます。これを見ると、例えばmysqldがTCP3306番ポートで、httpdが80番ポートでListenしている、といったことがわかります。

 次にhttpdの実体は何か知りたい場合はプロセス情報を見ます。

# ps -ef | grep httpd

 と打つと

# ps -ef|grep httpd
root    1663  1603  0 23:27   pts/0   00:00:00  grep httpd
root    26966    1  0 Jun15   ?     00:00:21  /usr/sbin/httpd
apache 27163 26966  0 04:02   ?     00:00:01  /usr/sbin/httpd
apache 27164 26966  0 04:02   ?     00:00:01  /usr/sbin/httpd
apache 30781 26966  0 05:58   ?     00:00:00  /usr/sbin/httpd

 と返ってきます。この時点でApacheらしいことは判明しましたが、念のため確かめてみましょう。

# /usr/sbin/httpd -v

 と打つと

Server version: Apache/2.2.3
Server built:  May 28 2009 12:50:07

 やはりApacheでした。この要領でサービスを特定していくことができます。

スケジュール処理の種類を調べる

 サーバーは外部に対してサービスを行うだけでなく、バッチ処理等を行っている場合がありますので、それらも調べます。

 UNIX系OSの場合はスケジュール処理をcronで行うので、cronが設定されているファイルを調べます。

# ls -l /var/spool/cron/

 と打つと

-rw------- 1 root    root 178 Jun 22 16:56 root
-rw------- 1 finance  root 254 Jun 30 22:52 finance
-rw------- 1 human  root 222 Jun 30 22:53 human
-rw------- 1 sales   root 152 Jun 30 22:53 sales

 次に

# more /var/spool/cron/sales

 と打つと

*/30 * * * * /bin/sh /home/sales/Batch/refresh_salesdb.sh > /dev/null 2>&1
0 0 1 * * /bin/sh /home/sales/Batch/refresh_merchantinfo.sh > /dev/null 2>&1

 この例の場合は2つのバッチファイルが存在しています。上のバッチは30分ごと、下のバッチは毎月1日の0:00に実行されるようになっていることがわかります。この例の場合はバッチファイル名から推測して、なんとなく営業データベースの情報を更新するバッチファイルと、取引先情報を更新するバッチファイルに見えます。

 このバッチファイルが何をするためのものなのかを知るためには、このバッチファイルを実際に分析する方法もありますが、バッチファイルに関するドキュメントを探す方法もあります。サーバー管理者がプログラムの解析まで行うのは好ましくないため、もしバッチファイルに関するドキュメントが存在しないのであればこの機会にドキュメント化しておいて、今後のサーバー管理に役立てることをお勧めします。

国内某有名ITベンチャー企業に創業メンバーとして携わる。国内最大規模のシステムを構築運用してきたほか、社内情報システム導入のプロジェクトマネジメント、韓国の交友関係が豊富なことから韓国関連で多数のシステムインテグレーションなども行ってきた。前職は富士通株式会社でSE。
個人blog:http://nosa.cocolog-nifty.com/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています