JBoss EAP 스크립트로 배우는 스크립트
본문 바로가기
IT 이야기/Script

JBoss EAP 스크립트로 배우는 스크립트

by 찬찬이 아빠 2020. 5. 28.
반응형
  1. jboss_start.sh : 시작 스크립트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/bin/sh
 
JBOSS_DIR=/CLOUD/JBOSS/domains
 
# 노드가 1개 일 경우(JBOSS_DIR 하위 디렉터리 수를 카운트 해서 1 이면)
if [ `ls $JBOSS_DIR | wc -l` -eq 1 ]; then
 
    # 노드 리스트 저장(/CLOUD/JBOSS/domains/노드명을 /로 매칭
    # cut -d/ -f1 : 구분자를 뒤에서 첫번째 /로 잘라냄(즉, 노드명만 잘라냄)
     node_list=`ls -F $JBOSS_DIR | grep / | cut -d/ -f1`
 
    # 날짜, 시간 저장
     DATE=`date +%Y%m%d%H%M%S`
 
    # 각 노드의 환경설정 스크립트(env.sh) 수행
     . ${JBOSS_DIR}/${node_list}/bin/env.sh
 
    # PID 저장 : java 프로세스 중 노드명을 매칭 후 두 번째 값 추출
     PID=`ps -ef | grep java | grep "=$SERVER_NAME " | awk '{print $2}'`
     echo $PID
 
    # JBoss 프로세스 ID가 없으면(문자e를 넣어 문자e가 아니면 jboss 프로세스가 실행된 것임)
     if [ e$PID != "e" ]; then
          echo "JBoss SERVER - $SERVER_NAME is already RUNNING..."
          exit;
     fi
 
    # 계정명 저장
     UNAME=`id --n`
 
    # 만약 접속 계정명이 jboss 이면
     if [ e$UNAME != "e$JBOSS_USER" ]; then
          echo "Use $JBOSS_USER account to start JBoss SERVER - $SERVER_NAME..."
          exit;
     fi
 
    # 설정한 JAVA_OPTS 출력
     echo $JAVA_OPTS
 
    # JBOSS EAP 스크립트 수행. -DSERVER=노드명, -P=환경 설정값, -c : 환경설정 파일(standalone-ha.xml), nohup(백그라운드 실행), 로그 생성
     nohup $JBOSS_HOME/bin/standalone.sh -DSERVER=$SERVER_NAME -P=$DOMAIN_BASE/$SERVER_NAME/bin.env.properties -c $CONFIG_FILE >> $LOG_HOME/nohup/${SERVER_NAME}_${DATE}.out &
 
    # 버퍼에 있는 값과 동일하면
     if [ e$1 = "enotail" ]; then
          echo "Staring... $SERVER_NAME"
          exit;
     fi
 
    # server.log 마지막 내용 출력
     tail -f $LOG_HOME/server.log
 
# 노드가 2개 이상일 경우
else
 
     echo -"\nInput JBoss Node Name."
 
    # 노드 리스트 한줄로 출력(탭으로 구분)
     echo -"Node List : $(ls -F $JBOSS_DIR | grep / | cut -d/ -f1 | grep -v -e '^$' | tr "\n" "\t")\n"
 
    # 노드명 출력 후 ID 입력 받음
     read -" [ JBoss Node Name ] : " ID
 
    # 입력 받은 노드명 저장
     JBOSS_NODE=$JBOSS_DIR/${ID}
 
    # 입력받은 값이 없으면 노드 리스트 다시 출력
     if [[ $ID == "" ]]; then
          echo -"\nSpace or Enter is not allowed..."
          echo -"Node List : $(ls -F $JBOSS_DIR | grep / \ cut -d/ -f1 | grep -v -e '^$' | tr "\n" "\t")\n"
          echo -"Return script after node name resolution\n"
          exit;
 
    # 노드가 입력되었다면 날짜 저장
     elif [ -d $JBOSS_NODE ]; then
          DATE=`date + %Y%m%d%H%M%S`
 
        # 노드별 환경설정 스크립트(env.sh)실행
          . ${JBOSS_NODE}/bin/env.sh
 
        # jboss 프로세스 번호 저장
          PID=`ps -ef | grep java | grep "=$SERVER_NAME " | awk '{print $2}'`
 
          echo $PID
 
        # jboss 프로세스가 실행되어 있으면 
          if [ e$PID != "e" ]; then
               echo "JBoss SERVER - $SERVER_NAME is already RUNNING..."
               exit;
          fi
 
        # 계정명 저장
          UNAME=`id --n`
 
        # jboss 유저명과 계정명이 동일하지 않으면
          if [ e$UNAME != "e$JBOSS_USER" ]; then
               echo "Use $JBOSS_USER account to start JBoss SERVER - $SERVER_NAME..."
              exit;
          fi
 
        # 설정된 JAVA_OPTS 출력
          echo $JAVA_OPTS
 
        # JBOSS EAP 스크립트 수행. -DSERVER=노드명, -P=환경 설정값, -c : 환경설정 파일(standalone-ha.xml), nohup(백그라운드 실행), 로그 생성
          nohup $JBOSS_HOME/bin/standalone.sh -DSERVER=$SERVER_NAME -P=$DOMAIN_BASE/$SERVER_NAME/bin/env.properties-c $CONFIG_FILE >> $LOG_HOME/nohup/${SERVER_NAME}_${DATE}.out &
 
        # 버퍼에 있는 값과 동일하면
          if [ e$1 = "enotail" ]; then
               echo "Starting... $SERVER_NAME"
               exit;
          fi
 
        # server.log 마지막 내용 출력
          tail -f $LOG_HOME/server.log
 
     else
          echo -"\nNo Search Node Name : ${ID}"
          echo -"Node List : $(ls -F $JOBSS_DIR | grep / | cut -d/ -f1 | grep -v -e '^$' | tr "\n" "\t")\n"
          echo -"Return script after node name resolution\n"
          exit;
     fi
fi
cs

 

 

 

  2. jboss_stop.sh : 종료 스크립트

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/sh
 
JBOSS_DIR=/CLOUD/JBOSS/domains
 
# 노드가 1개일 경우
# 노드가 있으면
if [ `ls -F $JBOSS_DIR | grep / | wc -l` -eq 1 ]; then
 
    # 노드 리스트 저장
     node_list=`ls -F $JBOSS_DIR | grep / | cut -d/ -f1`
 
    # 날짜, 시간 저장
     DATE=`date +%Y%m%d%H%M%S`
 
    # jboss 환경 설정 스크립트(env.sh) 실행
     . ${JBOSS_DIR}${node_list}/bin/env.sh
 
    # 노드의 PID를 찾아 kill -9 PID 수행
     ps -ef | grep java | grep "${SERVER_NAME}" | awk {'print "kill -9 " $2'| sh -x
 
 
# 노드가 2개 이상일 경우
else
     echo -"\nInput JBoss Node Name."
 
    # 노드 리스트 한줄로 출력(탭으로 구분)
     echo -"Node List : $(ls -F $JBOSS_DIR | grep / | cut -d/ -f1 | grep -v -e '^$' | tr "\n" "\t")\n"
 
    # 노드명 입력 받기
     read -"[ JBoss Node Name ] : " ID
 
    # 입력 받은 노드명 저장
     JBOSS_NODE=$JBOSS_DIR/${ID}
 
    # 입력 값이 없을 경우 노드 리스트 다시 출력(탭으로 구분)
     if [[ $ID == "" ]]; then
          echo -"\nSpace or Enter is not allowed..."
          echo -"Node List : $(ls -F $JBOSS_DIR | grep / | cut -d/ -f1 | grep -v -e '^$' | tr "\n" "\t")\n"
          echo -"Return script after node name resolution\n"
          exit;
    
    # 입력 노드가 있으면
     elif [ -d $JBOSS_NODE ]; then
 
        # jboss 환경 설정 스크립트(env.sh) 실행
          . ${JBOSS_NODE}/bin/env.sh
 
        # 노드의 PID를 찾아 kill -9 PID 수행
          ps -ef | grep java | grep "${SERVER_NAME}" | awk {'print "kill -9 " $2'| sh -x
 
    # 입력한 노드가 없을 경우 메시지 출력 후 노드 리스트 다시 출력(탭으로 구분)
     else
          echo -"\nNo Search Node Name : ${ID}"
          echo -"Node List : $(ls -F $JBOSS_DIR | grep / | cut -d -f1 | grep -v -e '^$' | tr "\n" "\t")\n"
          echo -"Return script after node name resolution\n"
          exit;
     fi
fi
cs
반응형

댓글