動作環境
Xeon E5-2620 v4 (8コア) x 2
32GB RAM
CentOS 6.8 (64bit)
NCAR Command Language Version 6.3.0
for WRF3.7.1, WPS3.7.1
openmpi-1.8.x86_64 とその-devel
mpich.x86_64 3.1-5.el6とその-devel
gcc version 4.4.7 (とgfortran)
for WRF3.9, WPS3.9
Open MPI v2.1.1
gcc version 4.9.2 (とgfortran; devtoolset-3使用)
NetCDF v4.4.1.1, NetCDF (Fortran API) v4.4.4
Python 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Python 3.6.0 on virtualenv
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
date (GNU coreutils) 8.4
tmux 1.6-3.el6
実装内容
原因不明の再起動を起こしたサーバー。
今後の原因調査のため、@tukiyo3 さんのコメントの方法でログを取ってみます。
ログの概要
- 出力先は
/home/wrf/LOG_SERVER_180308
- mkdirしておく
- 日付のディレクトリを作成し、日付ごとにログを取る
- 例:
/home/wrf/LOG_SERVER_180308/2018-03-08
- 例:
- ログの出力は1分間隔とする
- 今後変更するかもしれない
- 例:
/home/wrf/LOG_SERVER_180308/2018-03-08/log_proc_2018-03-08_105501
- 例:
/home/wrf/LOG_SERVER_180308/2018-03-08/log_proc_2018-03-08_105601
bash script v0.1
(追記 2018/03/08) v0.2を後で記載しています。
log_runnig_process_180308_exec
# !/usr/bin/env bash
# v0.1 Mar. 8, 2018
# - log running process
# + to take difference between before- and after- the unintended reboot
# + CentOS 6.8 used for WRF
#
set -eu
BASE_DIR=/home/wrf/LOG_SERVER_180308
SUB_DIR=$(date "+%Y-%m-%d")
PREFIX="log_proc"
TIMESTAMP="$(date "+%Y-%m-%d_%H%M%S")"
WORK_DIR=$BASE_DIR/$SUB_DIR
set +e # to prevent "mkdir: cannot create directory" for existing dir.
mkdir $WORK_DIR
set -e
FILEPATH=$WORK_DIR/${PREFIX}_${TIMESTAMP}
ps -ef > $FILEPATH
set +e
は下記と関連する。
cron設定 v0.1
(追記 2018/03/08) v0.2を後で記載しています。
$ sudo cat /var/spool/cron/y_okada
30 20 * * * /home/wrf/TOOL/backup_exec
*/1 * * * * /home/wrf/TOOL/log_runnig_process_180308_exec
1つ目はプログラムのバックアップ用の処理 (今回の内容とは無関係)。
2つ目が今回追加したもの。
備考
1分ごとにmailがやってくる。
mailの処理をしないといけない。
backup_execのメールが埋もれる。
1分ごとにコマンドを実行するPythonスクリプトを実装し、それを起動し続けるという方法もある。
メモ: サーバーの時計が7分ずれていることに気付いた (実際の時刻 - 7分)。
関連
bash script v0.2
log_runnig_process_180308_exec
# !/usr/bin/env bash
# v0.2 Mar. 8, 2018
# - use [mkdir -p] for existing directories
# v0.1 Mar. 8, 2018
# - log running process
# + to take difference between before- and after- the unintended reboot
# + CentOS 6.8 used for WRF
#
set -eu
BASE_DIR=/home/wrf/LOG_SERVER_180308
SUB_DIR=$(date "+%Y-%m-%d")
PREFIX="log_proc"
TIMESTAMP="$(date "+%Y-%m-%d_%H%M%S")"
WORK_DIR=$BASE_DIR/$SUB_DIR
mkdir -p $WORK_DIR
FILEPATH=$WORK_DIR/${PREFIX}_${TIMESTAMP}
ps -ef > $FILEPATH
ログのdiff
$ diff log_proc_2018-03-08_112101 log_proc_2018-03-08_112201
667,669c667,669
< root 7863 5964 0 11:21 ? 00:00:00 CROND
< y_okada 7864 7863 0 11:21 ? 00:00:00 bash /home/wrf/TOOL/log_runnig_process_180308_exec
< y_okada 7868 7864 0 11:21 ? 00:00:00 ps -ef
---
> root 7871 5964 0 11:22 ? 00:00:00 CROND
> y_okada 7872 7871 0 11:22 ? 00:00:00 bash /home/wrf/TOOL/log_runnig_process_180308_exec
> y_okada 7876 7872 0 11:22 ? 00:00:00 ps -ef
ログを取るための処理がログに記載される。
1分ごとにコマンドを実行するPythonスクリプトを実装し、それを起動し続けるという方法もある。
にした方がいいかもしれない。
(1分ごとにインターバル処理するbashスクリプトでも)。
cron設定 v0.2
@tukiyo3 さんのコメント
にて色々な方法を提案いただきました。
情報感謝です。
「標準出力は捨てる方法」を使わせていただきます。