• 아파치 자동 재시작 스크립트 폴더 남은 시간 계산 확인 python3 script 확장모델

    아파치 자동 재시작 스크립트 폴더 남은 시간 계산 확인 python3 script 확장모델

    아파치 자동 재시작 스크립트입니다.파이썬 자동 스크립트, 파이썬 리눅스 자동화, 파이썬 폴더 시간, 파이썬 디렉토리 시간, 파이썬 디렉토리, 파이썬 디렉토리 확인, 파이썬 디렉토리 존재 확인, 파이썬 시간 빼기, 파이썬 남은 시간, 파이썬 남은 시간 계산

    AWS 운영중에 서버 부하로 인해서 httpd, mariadb (mysql) 서버가 메모리 부족현상으로 멈출때가 있습니다.

    이를 대비하여 메모리 수치를 지정해놓고 자동으로 멈췄다가 실행하는 파이썬 자동화 스크립트 입니다.

    기본적으로 아래 주소의 글을 읽으신 후 파이썬과 기본 모델을 설치를 하셔야합니다.

    그리고 이 확장 모델을 그대로 복사 붙이시면 오류없이 동작하게됩니다.

     

    cd /root/_PYTHON3
    rm -rf ppp.tar
    wget https://vlog.tion.co.kr/python/ppp.tar
    ll
    tar xvf ppp.tar
    rm -rf ppp.tar
    rm -rf /root/_PYTHON3/get-pip.py
    ll
    /p.sh

     

    모든 파일은 이미 정해진 위치와 정해진 동작을 하기 때문에 하나하나 따로 소스분석하시고 사용하셔도 되지만

    기본모델 + 확장모델 함께 복사 붙여넣기 방식으로 사용하시면 가장 편하게 사용하실 수 있을겁니다.

     

    추가된 모델은 function (기능) 하나 추가되었습니다.

    기존 _______isRUN 폴더가 생성된 시각을 확인하여 3분이 지날 경우 자동으로 삭제하도록 하였습니다.

    
    def delete_old_forder(delete_forder, delete_minutes):
    
    os.system("echo \"INFO: \"" + delete_forder + '__' + str(delete_minutes))
    
    if os.path.exists(delete_forder):
    timestamp_now = datetime.now().timestamp()
    
    is_old_forder = os.stat(delete_forder).st_mtime < timestamp_now - (delete_minutes * 60)
    os.system("echo \"TIME_CREAT: \"" + str(os.stat(delete_forder).st_mtime))
    os.system("echo \"TIME_NOW: \"" + str(timestamp_now))
    os.system("echo \"TIME_AFTER: \"" + str(timestamp_now - (delete_minutes * 60)))
    os.system("echo \"TIME_REMAIN: \"" + str(os.stat(delete_forder).st_mtime - (timestamp_now - (delete_minutes * 60))))
    
    if is_old_forder:
    try:
    os.rmdir(delete_forder)
    os.system("echo \"DELETE FORDER \"" + delete_forder)
    except OSError:
    os.system("echo \"ERROR DELETE FORDER\"")

     

     

    위의 펑션을 이용하시면 파이썬 폴더 남은 시간 확인이 가능하며

    폴더를 원하는 시각에 삭제, 생성도 가능해집니다.

    리눅스 운영하시는분들은 파이썬 이용하셔서 자동화 재부팅 시스템 만들어놓으시면 웹서버 운영이 많이 편해지십니다.

  • 파이썬 자동화 리눅스 httpd restart 자동실행 스크립트

    파이썬 자동화 리눅스 httpd restart 자동실행 스크립트

    이 스크립트를 이용하여 메모리 부하 특정% 이상일 경우 자동으로 아파치 서버를 재부팅 해줍니다.

    만약 아파치 서버 이외 데이터베이스 서버를 재부팅 할경우 원하는대로 항목을 추가하여 수정하여 사용하면됩니다.

    이 프로그램은 파이썬 3 에서 동작하며 파이썬3를 필히 설치해야 동작합니다.

    모든 동작은 아래 내용 순서대로 따라하면 설치를 할 수 있으며 누구나 활용할 수 있습니다.

    잘 보고 따라하셔서 리눅스 자동화 시스템을 만들어보시기 바랍니다.

     

    파이썬 자동화 httpd restart 자동실행 스크립트

    1. 파이썬3를 설치합니다.

    이 단계는 파이썬3가 설치되신분들은 통과하셔도 됩니다.

    yum install python3 
    
    

    2. 파이썬 자동실행 스크립트 다운로드를 합니다.

    자동실행 스크립트를 다운받아야 하므로 필히 이 단계를 진행하셔야합니다.

    폴더명을 저와 동일하게 만드시면 모든 과정을 복사 붙여넣기 방식으로 편하게 진행할 수 있으니 가급적이면 그냥 복사 붙여넣기 방식대로 해보세요.

    다운로드 받기 위해 /root 폴더에 _PYTHON3 폴더를 생성합니다.

    (이 폴더명도 동일하게 생성해야지만 스크립트 내 폴더명을 변경하지 않으셔도됩니다)

     

    mkdir /root/_PYTHON3
    cd /root
    
    curl https://vlog.tion.co.kr/python/python_httpd_auto_restart_tion.tar -o python_httpd_auto_restart_tion.tar
    tar xvf python_httpd_auto_restart_tion.tar
    rm -rf /root/python_httpd_auto_restart_tion.tar
    cd /root/_PYTHON3
    python3 get-pip.py
    pip install psutil stdin
    
    cp -ai p.sh /
    cp -ai p.sh /root
    
    /p.sh
    
    echo OK

     

    만약 pip 설치가 안될경우!!

    sudo apt-get install python3-distutils

     

    3. crontab 등록합니다.

    crontab -e
    
    00 00 * * * ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
    */1 * * * * python3 /root/_PYTHON3/memcheck_httpd_restart.py
    */30 * * * * rdate -s time.bora.net
    
    
    

     

     

    1번째, 3번째 라인은 아시아, 시간서버에 자동으로 시간을 맞추는거라 빼셔도 상관없습니다.

    자 이제부터 자동화된 스크립트를 통해서 아파치 서버가 부하 걸릴때마다 _logs 항목에 로그를 찍으면서 재실행이 됩니다.

    https restart 명령어 이외에 MariaDB 같은 데이터베이스도 재실행 할 수 있습니다.

     

     

    파이썬 자동스크립트 파일 설명

    _______init_memory_limit_value.py

    이 파일은 기본 메모리 제한수치를 작성하는 부분입니다.

    기본 70% 설정이 되어져있는데 메모리 사용률이 70%를 넘는 순간 아파치 재실행을 하겠다 라는 의미입니다.

    메모리가 넉넉하다면 수치를 더 낮추셔도 상관없습니다. 기본 메모리가 1GB, 2GB, 4GB 이렇게 저용량이라면 80~90% 사이를 지정해놓아야합니다.

     

    memcheck_httpd_restart.py

    내용은 전체적으로 몰라도 상관없습니다.

    프로그래머가 아니더라도 제가 중간에 빨간박스 넣은 부분은 수정하실수 있을겁니다.

    echo 로 입력한 부분은 주석으로 설명을 적어놓은 부분이며

    os.system(“service httpd restart”)

    이렇게 되어진 부분이 재실행 부분입니다.

    이 부분에 mariadb, httpd, apache 서버 등 자신이원하는 항목을 추가할 수 있습니다.

     

    get-pip.py 파일은 처음에 모듈 설치 할때 다운받은 파일이므로 이후에는 필요없으나 그냥 두셔도 큰 문제는 없습니다.

    _logs 폴더는 재실행 될때마다 자동으로 파일이 생성되어 언제 재실행이 되었는지 기록을 확인 할 수 있습니다.

    __pycache__ 폴더는 파이썬이 실행되면 자동으로 임시 저장되는 폴더이므로 그냥 놔두시면됩니다.

     

    혹시 사용하시다가 도움 되신 분들은 저에게 꼭 문자 한통 스마트폰으로 클릭하셔서 남겨주세요^^

    스마트폰에서 클릭해서 문자보내기

     

    잘 사용하세요.

    감사합니다.