cron 및 crontab 설정하기

태그
개념
실습
생성 일시
2022/11/18 05:42

cron

cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용한다. 셸 명령어들이 주어진 일정에 주기적으로 실행하도록 규정해놓은 crontab (cron table) 파일에 의해 구동된다. 사용자들은 자신들만의 개개의 crontab 파일들을 가질 수 있으며, 가끔은 /etc 또는 /etc의 하위 디렉터리에 시스템 관리자들만이 편집할 수 있는, 시스템 전반에 영향을 미치는 crontab 파일이 존재하는 경우도 있다.

구성 파일

사용자를 위한 구성 파일은 crontab -e를 호출하여 편집할 수 있다.
# ┌───────────── min (0 - 59) # │ ┌────────────── hour (0 - 23) # │ │ ┌─────────────── day of month (1 - 31) # │ │ │ ┌──────────────── month (1 - 12) # │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0) # │ │ │ │ │ # │ │ │ │ │ # * * * * * command to execute
Plain Text
복사
다음은 cron 사용자의 기본 셸이 본 셸 호환이라는 가정 하에 매일 자정 이후 1분 째에 아파치 오류 로그를 지정 경로에 error_log 파일로 저장한다. 1 0 * * * printf > /var/log/apache/error_log
아래의 예는 매일 20시 (오후 8시)에 export_dump.sh라는 셸 프로그램을 실행한다. 0 20 * * * /home/oracle/scripts/export_dump.sh

crontab

*/10 * * * * bash monitoring.sh | wall으로 cron 설정하면 10분마다 아래의 monitoring.sh 실행
#!/bin/bash printf "#Architecture: " uname -a printf "#CPU physical : " cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l printf "#vCPU : " cat /proc/cpuinfo | grep "processor" | wc -l printf "#Memory Usage: " free --mega | grep "Mem" | awk '{print sprintf("%d/%dMB (%0.2f%%)", $3, $2, $3/$2*100)}' printf "#Disk Usage: " df -BM | awk '{a+=$3; b+=$4; c+=$5} END {print sprintf(%d/%dMB (%0.2f%%)", a, a+b, a/(a+b)*100)}' printf "#CPU load: " mpstat | awk 'NR==4 {print 100-$NF "%"}' printf "$Las boot: " who -b | awk '{print $3, $4}' printf "#LVM use : " lsblk | grep lvm | wc -l | awk '{if ($1 > 0) print "yes"; else print "no";}' ESTB=$(ss -t | grep "ESTB" | wc -l) printf "#Connection TCP : %s ESTABLISHED\n" ${ESTB} printf "#User log : " who | wc -l IP=$(hostname -I) MAC=$(ip address | grep "link/ether" | awk '{print $2}') printf "#Network: IP %s (%s)\n" ${IP} ${MAC} CMD=$(journalctl | grep TSID | wc -l) printf "#Sudo : $s cmd\n" ${CMD}
Shell
복사