Changes between Initial Version and Version 1 of misc/server_process


Ignore:
Timestamp:
02/22/18 14:12:23 (6 years ago)
Author:
kameta
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/server_process

    v1 v1  
     1= サーバープロセスの定期保存 = 
     2== 概要 == 
     3psコマンドによるサーバー毎の状態を定期保存する方法を紹介する。[[br]] 
     4psコマンドの結果をログとして保存するスクリプトをcronで10毎に実行している。 
     5 
     6== ディレクトリ構成 == 
     7{{{ 
     8ServerProcess 
     9|-- script 
     10|   |-- snap.sh                              <- ログとして保存するスクリプト 
     11| 
     12|-- data 
     13|   |-- pfrproc2                             <- サーバー 
     14|   |   |-- 2018 
     15|   |   |   |-- 02 
     16|   |   |   |   |-- 22 
     17|   |   |   |   |   |-- 20180222000001.log 
     18|   |   |   |   |   |   .................. 
     19|   |   |   |   |   |-- 20180222134001.log 
     20| .................. 
     21|   |-- pfrproc4                             <- サーバー 
     22|   |   |-- 2018 
     23|   |   |   |-- 02 
     24|   |   |   |   |-- 22 
     25|   |   |   |   |   |-- 20180222000001.log 
     26|   |   |   |   |   |   .................. 
     27|   |   |   |   |   |-- 20180222134001.log 
     28| .................. 
     29}}} 
     30 
     31== ログ == 
     32ログにはヘッダとしてホスト名、PSコマンド、日時を付加している。 
     33{{{ 
     34# hostname : pfrproc2 
     35# command  : ps axwwwo user,pid,ppid,%cpu,%mem,vsz,rss,tname,stat,start_time,bsdtime,args 
     36# date     : 2018/02/22 14:00:01 
     37 
     38USER        PID   PPID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND 
     39root          1      0  0.0  0.0  33664  1236 ?        Ss    2017   0:01 /sbin/init 
     40root          2      0  0.0  0.0      0     0 ?        S     2017   0:00 [kthreadd] 
     41root          3      2  0.0  0.0      0     0 ?        S     2017   0:25 [migration/0] 
     42root          4      2  0.0  0.0      0     0 ?        S     2017  11:58 [ksoftirqd/0] 
     43root          5      2  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/0] 
     44root          6      2  0.0  0.0      0     0 ?        S     2017   0:06 [watchdog/0] 
     45root          7      2  0.0  0.0      0     0 ?        S     2017   0:04 [migration/1] 
     46root          8      2  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/1] 
     47root          9      2  0.0  0.0      0     0 ?        S     2017   2:44 [ksoftirqd/1] 
     48root         10      2  0.0  0.0      0     0 ?        S     2017   0:07 [watchdog/1] 
     49root         11      2  0.0  0.0      0     0 ?        S     2017   1:17 [migration/2] 
     50root         12      2  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/2] 
     51root         13      2  0.0  0.0      0     0 ?        S     2017   6:29 [ksoftirqd/2] 
     52root         14      2  0.0  0.0      0     0 ?        S     2017   0:05 [watchdog/2] 
     53root         15      2  0.0  0.0      0     0 ?        S     2017   0:46 [migration/3] 
     54.................. 
     55}}} 
     56 
     57== スクリプト == 
     58ディレクトリの設定を変更することによって他の環境でも使用可能。[[br]] 
     59cERL/PFではppidも情報として残したいのでpsコマンドを変更している。 
     60{{{ 
     61#!/bin/sh 
     62 
     63#PS_CMD="ps auxwww" 
     64PS_CMD="ps axwwwo user,pid,ppid,%cpu,%mem,vsz,rss,tname,stat,start_time,bsdtime,args"   <- psコマンド 
     65 
     66HOST_NAME="`hostname -s`" 
     67 
     68YEAR="`date +%Y`" 
     69MONTH="`date +%m`" 
     70DAY="`date +%d`" 
     71HOUR="`date +%H`" 
     72MIN="`date +%M`" 
     73SEC="`date +%S`" 
     74 
     75BASE_DIR="/pf/archive/OP/ServerProcess/"                                                <- ディレクトリ 
     76DATA_DIR="$BASE_DIR/data" 
     77 
     78LOG_DIR="$DATA_DIR/$HOST_NAME/$YEAR/$MONTH/$DAY" 
     79LOG_NAME="$YEAR$MONTH$DAY$HOUR$MIN$SEC.log" 
     80LOG_FULL_NAME="$LOG_DIR/$LOG_NAME" 
     81 
     82#echo "$HOST_NAME" 
     83#echo "$YEAR" 
     84#echo "$MONTH" 
     85#echo "$DAY" 
     86#echo "$HOUR" 
     87#echo "$MIN" 
     88#echo "$SEC" 
     89 
     90#echo "$BASE_DIR" 
     91#echo "$DATA_DIR" 
     92 
     93#echo "$LOG_DIR" 
     94#echo "$LOG_NAME" 
     95echo "$LOG_FULL_NAME" 
     96 
     97if [ ! -e $LOG_DIR ]; then 
     98  mkdir -p $LOG_DIR 
     99fi 
     100 
     101echo "# hostname : $HOST_NAME" > $LOG_FULL_NAME 
     102echo "# command  : $PS_CMD" >> $LOG_FULL_NAME 
     103echo "# date     : $YEAR/$MONTH/$DAY $HOUR:$MIN:$SEC" >> $LOG_FULL_NAME 
     104echo "" >> $LOG_FULL_NAME 
     105$PS_CMD >> $LOG_FULL_NAME 
     106}}}