• 리눅스 자동실행파일 만들기 crontab 크론탭 부팅 한번만

    리눅스 자동실행파일 만들기 crontab 크론탭 부팅 한번만

    리눅스 자동실행파일 만들기

    crontab 크론탭을 이용하여 리눅스 부팅할때 처음 한번만 딱 실행하도록 스크립트를 만들었습니다.

    재부팅만 하면 초기화 되는 스크립트가 존재해서 그 스크립트를 제거하니 인터넷이 안되더군요.

    어쩔수 없이 그대로 놔둔상태로 부팅이 완료되는 시점에 resolv.conf 파일을 삭제하고 다시 복사하는 스크립트를 제작하였습니다.

    리눅스 자동실행파일 만들기

    1. sh 파일 제작

    vi autoResolvShell.sh
    #부팅시 자동으로 네임서버 변경 스크립트
    rm -rf /etc/resolv.conf
    cp -ai /var/named/init/resolv.conf /etc/resolv.conf
    
    

    위의 파일을 chmod 701 autoResolvShell.sh 명령어로 실행 가능하도록 만들어줍니다.

    그리고 마지막으로 crontab -e 명령어로 한줄 추가합니다.

    2. 크론탭 재부팅시 한번 실행

    [coupang]

    crontab 제일 앞부분에 @reboot 을 입력하면 재부팅하고 딱 1번 실행한다는 명령어입니다.

    @reboot /var/named/init/autoResolvShell.sh
    

    @reboot -> 부팅하고 딱 한번 실행

    @yearly -> 1년에 1월 1일 한번 딱 실행

    @annually -> 매월 1일에 딱 한번 실행

    @weekly -> 매주 딱 한번 실행

    @daily -> 매일 딱 한번 실행

    재부팅을 제외한 나머지는 00:00에 실행합니다.

    @hourly -> 매시간마다 1초때 실행

    그 이외 원래 방식대로

    */1 * * * * 명령어 -> 1분마다 반복실행

    이렇게도 할 수 있습니다.

    30분마다 시간동기화를 위해서 crontab -e 명령어로 넣어두었습니다.

    [coupangend]

    00 00 * * * ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
    */30 * * * * rdate -s time.bora.net
    #보시면 대충 아시리라 봅니다. 위에꺼는 타임존, 아래꺼는 30분마다 시간 동기화
  • 파이썬 자동화 리눅스 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__ 폴더는 파이썬이 실행되면 자동으로 임시 저장되는 폴더이므로 그냥 놔두시면됩니다.

     

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

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

     

    잘 사용하세요.

    감사합니다.

     

  • crontab 으로 리눅스 시간 동기화 rdate -s time.bora.net

    crontab 으로 리눅스 시간 동기화 rdate -s time.bora.net

    crontab 명령어를 이용하여 주기적으로 리눅스 시간을 동기화 할 수 있습니다.

    하루에 1번만 하더라도 큰 오차는 생기지 않지만 제가 운영하는 서버 특성상 30분마다 확인합니다.

    /root 폴더의 autoLogsDelete.sh 파일은 httpd 로그가 많이 쌓여서 자동으로 삭제 되도록 하였습니다.

    스크립트는 아랫부분을 확인해보세요

     

    서울 시간으로 일단 맞춥니다.

    timedatectl set-timezone Asia/Seoul

     

    Crontab 내부에 로컬타임을 매일 00시 00분 마다 지정하여도 됩니다.

     

    crontab -e
    
    00 03 * * * /root/autoLogsDelete.sh
    00 09 * * * /root/autoLogsDelete.sh
    00 15 * * * /root/autoLogsDelete.sh
    00 21 * * * /root/autoLogsDelete.sh
    00 00 * * * ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
    00 00 * * * rdate -s time.bora.net
    30 00 * * * rdate -s time.bora.net
    00 01 * * * rdate -s time.bora.net
    30 01 * * * rdate -s time.bora.net
    00 02 * * * rdate -s time.bora.net
    30 02 * * * rdate -s time.bora.net
    00 03 * * * rdate -s time.bora.net
    30 03 * * * rdate -s time.bora.net
    00 04 * * * rdate -s time.bora.net
    30 04 * * * rdate -s time.bora.net
    00 05 * * * rdate -s time.bora.net
    30 05 * * * rdate -s time.bora.net
    00 06 * * * rdate -s time.bora.net
    30 06 * * * rdate -s time.bora.net
    00 07 * * * rdate -s time.bora.net
    30 07 * * * rdate -s time.bora.net
    00 08 * * * rdate -s time.bora.net
    30 08 * * * rdate -s time.bora.net
    00 09 * * * rdate -s time.bora.net
    30 09 * * * rdate -s time.bora.net
    00 10 * * * rdate -s time.bora.net
    30 10 * * * rdate -s time.bora.net
    00 11 * * * rdate -s time.bora.net
    30 11 * * * rdate -s time.bora.net
    00 12 * * * rdate -s time.bora.net
    30 12 * * * rdate -s time.bora.net
    00 13 * * * rdate -s time.bora.net
    30 13 * * * rdate -s time.bora.net
    00 14 * * * rdate -s time.bora.net
    30 14 * * * rdate -s time.bora.net
    00 15 * * * rdate -s time.bora.net
    30 15 * * * rdate -s time.bora.net
    00 16 * * * rdate -s time.bora.net
    30 16 * * * rdate -s time.bora.net
    00 17 * * * rdate -s time.bora.net
    30 17 * * * rdate -s time.bora.net
    00 18 * * * rdate -s time.bora.net
    30 18 * * * rdate -s time.bora.net
    00 19 * * * rdate -s time.bora.net
    30 19 * * * rdate -s time.bora.net
    00 20 * * * rdate -s time.bora.net
    30 20 * * * rdate -s time.bora.net
    00 21 * * * rdate -s time.bora.net
    30 21 * * * rdate -s time.bora.net

    /root/autoLogsDelete.sh

    find /etc/httpd/logs/ -size +100M -exec rm -rf {} \;
    service httpd restart
    
    chmod 701 /root/autoLogsDelete.sh