본문 바로가기

Operating Systems/Linux

[ Linux ] Cron 활용

그리스 로마 신화 시간의 신 크로노스(Cronus) 에서 유래

 

시간 기반 작업 스케쥴러

 

1. 예약 작업 명령어 이용 추가

# cron 설치
# apt-get -y install cron
yum -y install cronie

# cron 실행
systemctl restart crond

# 예약작업 확인(현재 로그인한 유저)
crontab -l

# 예약 작업 추가
# *      *      *      *      *
# 분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)(일요일 ~ 토요일) <= 7은 일요일
# ==================================================
# vi 에디터와 같은 형태로 실행됨
# 아래와 같이 입력할 경우 매 분마다 tmp파일 생성
# * * * * * mktemp /tmp/XXXXX
crontab -e

# 예약작업 전부 삭제
crontab -r

# 예약 작업 유저 지정 확인
crontab -u hmwoo -l

# 예약 작업 유저 지정 추가
crontab -u hmwoo -e

# 예약 작업 유저 지정 삭제
crontab -u hmwoo -r

# 예약 작업 삭제시 확인을 하고 삭제
crontab -i -u hmwoo -r

 

2. 예약 작업 파일 이용 추가

# [작업] [사용자] [명령어] 순으로 작성
# 파일 이름 관계 없이 /etc/cron.d 아래 있으면 실행됨

# 리눅스 부팅 또는 재부팅시에 실행되는 작업
echo "@reboot root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_boot

# 매년 1월 1일 자정에 실행(0 0 1 1 *)
rm /etc/cron.d/cronjob*

rm -rf /tmp/* /tmp/.*

date -s '2020-12-31 23:59:50'

echo "@yearly root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_yearly

watch -n 1 ls -la /tmp/

# 매월 초하루 자정에 실행(0 0 1 * *)
rm -rf /etc/cron.d/cronjob*

rm -rf /tmp/* /tmp/.*

date -s '2021-07-31 23:59:50'

echo "@monthly root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_monthly

watch -n 1 ls -la /tmp/

# 매주 일요일 자정에 실행(0 0 * * 0)
rm -rf /etc/cron.d/cronjob*

rm -rf /tmp/* /tmp/.*

date -s '2021-08-14 23:59:50'

echo "@weekly root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_weekly

watch -n 1 ls -la /tmp/

# 매일 자정에 실행(0 0 * * *)
rm -rf /etc/cron.d/cronjob*

rm -rf /tmp/* /tmp/.*

date -s '2021-08-22 23:59'

echo "@daily root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_daily

watch -n 1 ls -la /tmp/

# 매시 정초에 실행(0 * * * *)
rm -rf /etc/cron.d/cronjob*

rm -rf /tmp/* /tmp/.*

date -s '2021-08-22 11:59:50'

echo "@hourly root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_hourly

watch -n 1 ls -la /tmp/

# 매분 실행
rm -rf /etc/cron.d/cronjob*

rm -rf /tmp/* /tmp/.*

date -s '2021-08-22 11:59:50'

echo "* * * * * root mktemp /tmp/XXXXX" > /etc/cron.d/cronjob_usertime

watch -n 1 ls -la /tmp/

 

3. Crontab 명령어 사용자 권한 추가

# 파일이 존재하는 경우 cron.allow에 포함된 사용자만 crontab 명령어 사용 가능
ls -ld /etc/cron.allow

# 파일이 존재하는 경우 cron.deny에 포함된 사용자는 crontab 명령어 사용 불가
ls -ld /etc/cron.deny

 

4. 예약 작업 로그 파일 추가

touch /var/log/cron.log

sed -i "s/^cron\.\*//g" /etc/rsyslog.conf

echo "cron.* /var/log/cron.log" >> /etc/rsyslog.conf

systemctl restart rsyslog

tail -f /var/log/cron.log

'Operating Systems > Linux' 카테고리의 다른 글

[ Linux ] NFS 서버 설치  (0) 2021.09.25
[ Linux ] VNC 서버 설치  (0) 2021.09.23
[ Linux ] DHCP 서버 설치  (0) 2021.08.21
[ Linux ] 사용자 관리 및 생성 [임시작성]  (0) 2021.08.15
[ Linux ] AWK 활용  (0) 2021.08.14