at 스케줄링은 주로 프로그램을 특정시간에 한 번만 사용하고 싶을 때 이용한다.
cron 스케줄링은 프로그램을 특정 날짜나 시간,요일에 맞춰 주기적으로 사용하고 싶을 때 이용한다.
ex) 비 반복적인 업무 : 업데이트, 재부팅 -> at 스케줄링
반복적인 업무 : 정기적으로 파일백업 -> cron 스케줄링
at 명령어
작업 선언
# at 1300
# at 10:00pm today
작업 확인
# at -l
# atq
작업 취소
# atrm N (N : Job ID)
# at -r N
- 비반복에 사용되는 명령어
- 지정한 시간에 어떠한 작업이 실행될 수 있도록 작업 스케줄을 예약 처리해 주는 기능
- at가 설치되어 있지 않다면 yum을 이용해 설치하자 (아래참고)
- at 스케줄을 사용하기 위해서는 at 데몬이 작동하고 있어야 한다. (아래참고)
at 설치 & 데몬 재시작
yum install at
systemctl restart atd
[EX] at 선언하기
at 12:03at> echo 1111 > /dev/pts/0 at> <EOT> job 2 at Sat Oct 30 12:03:00 2021
[EX] at -l //at 확인 (이미 출력한 것은 안나옴)
at -l1 Sat Oct 30 12:03:00 2021 a root 2 Sat Oct 30 12:03:00 2021 a root
crontab 명령어
cron 데몬은 같은 작업을 주기적으로 반복 실행되도록 하는 작업 스케줄용 데몬으로, 매분, 매시, 매일, 매주, 매월, 매요일 단위로 cron 데몬에 의해서 작업이 실행될 수 있다.
/etc 디렉토리에 일,주,월,요일 단위 형태로 cron 디렉토리가 존재하며, 이들 디렉토리에는 작업 예약 스크립트들이 들어 있다. /etc/crondaily 디렉토리안에는 여러 가지 스크립트들이 존재하는데, 매일 이들 스크립트는 cron 데몬에 의해서 자동적으로 실행된다.
cron을 이용한 스케줄링은 시스템운영에 필요한 작업과, 사용자에게 필요한 작업 두 가지로 나뉜다.
- 시스템 운영에 필요한 작업은 root 권한으로 /etc/crontab에 등록해서 수행할 수 있다.
- 사용자가 필요에 의해 지정하는 작업은 crontab 명령어를 통해 등록할 수 있다.
작업 선언
# crontab -e (-e : Edit, # vi /var/spool/cron/<사용자이름>)
# crontab -e -u user01
작업 확인
# crontab -l (-l : List, #cat /var/spool/cron/<사용자이름>)
작업 삭제
# crontab -r (주의) (-r : Remove, # rm /var/spool/cron/<사용자이름>)
*주의
crontab은 에디터를 실행하면(crontab -e) 임시파일로 생성이 된다. 그리고 저장을 하는 순간 바로 적용되어 동작한다. 저장하고 빠져나가면 crontab: installing new crontab을 출력하며 바로 실행 시작한다.
cron 데몬 확인
systemctl status crond.service
cron 디렉토리 확인
find /etc | grep cron
/etc/crontab
/etc/cron.daily
/etc/cron.daily/logrotate
/etc/cron.daily/man-db.cron
/etc/systemd/system/multi-user.target.wants/crond.service
/etc/sysconfig/crond
/etc/anacrontab
/etc/cron.hourly
/etc/cron.hourly/0anacron
/etc/selinux/targeted/active/modules/100/cron
/etc/selinux/targeted/active/modules/100/cron/cil
/etc/selinux/targeted/active/modules/100/cron/hll
/etc/selinux/targeted/active/modules/100/cron/lang_ext
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.monthly
/etc/cron.weekly
/etc/pam.d/crond
/etc/cron.deny
스케줄링 주기 설정방법
* * * * *
분(0-59) /시간(0-23) /일(1-31) /월(1-12) /요일(0-7)
각각의 필드는 설정값에 따라 시간, 월, 일단위로 쪼개서 스케줄링을 설정할 수 있다.
10, 20, 30 * * * * = 매시간 10분, 20분, 30분에 실행
0-30 10 * * * = 매일 10시 0분 ~ 30분까지 매분 실행
* * 1 1-12/2 * = 1~12월까지 2개월마다 1일날 매분 실행
10 * * * 1,3,5 = 월,수,금요일마다 매시간 10분에 실행
0 20 * * * /root/snapmk.sh = 매일 오후 8시마다 실행
* 20 * * * /root/snapmk.sh = 오후 8시에 매분 실행
00 09-18/1 * 5 1-5 /root/port_script.sh = 5월, 월-금 ,09시~18시 까지 1시간마다 실행
Cron 로그 확인 방법
#Ubuntu crontab 로그 확인
grep CRON /var/log/syslog
'OS > Linux' 카테고리의 다른 글
[Linux] 포트 스캔 명령어 (nmap) (0) | 2021.11.19 |
---|---|
[Linux] 로컬의 파일을 다른 서버로 파일 전송(scp명령어) (0) | 2021.11.04 |
[Linux] Bash 문자열 변수 조작 (0) | 2021.10.26 |
[Linux] curl을 통한 응답값 예쁘게 출력하는 방법(jq라이브러리) (0) | 2021.10.21 |
[Linux] 어떤 사용자가 언제 무슨 작업을 했는지 확인방법(로그 확인) (0) | 2021.10.20 |