정기적인 작업을 수행하는 경우 ( 스케줄링 )
- at
at 데몬은 지정한 시간에 어떠한 작업이 실행될 수 있도록 작업 스케줄을 예약 처리해 주는 기능을 한다.
[실행]
# services atd restart
[명령어 형식]
# at TIME
# at -l ( # atq ) /* 확인 */
# at -r ( # atrm ) /* 삭제 */
- crontab
cron 데몬은 같은 작업을 주기적으로 반복 실행되도록 하는 작업 스케줄용 데몬으로, 매분, 매시, 매일, 매주, 매월, 매요일 단위로 cron 데몬에 의해서 작업이 실행될 수 있다.
/etc/cron/daily 디렉토리안에는 여러 가지 스크립트들이 존재하는데, 매일 이들 스크립트는 cron 데몬에 의해서 자동적으로 실행된다.
[실행]
# service crond restart
[명령어 형식]
# crontab file
# crontab -e /* -e : Edit */ ( # vi /var/spool/cron/<사용자이름> )
# crontab -l /*-l : List*/ ( # cat /var/spool/cron/<사용자이름>)
# crontab -r /* -r : Remove */ ( # rm /var/spool/cron/<사용자이름>)
(주의) 삭제 명령어를 사용하면 모든 스케줄링이 삭제된다. 다른 사용자가 등록한 스케줄링도 모두 삭제된다.
[crontab 파일 분석]
분 시 일 월 요일 CMD
0 3 * * * /root/bin/backup.sh
(분) 0 - 59
(시) 0 - 23
(일) 1 - 31
(월) 1 - 12
(요일) 0 - 7 (0,7: 일요일, 1: 월요일, 2: 화요일)
분 시 일 월 요일 CMD
--------------------------------------------
0 3 * * * /root/bin/backup.sh /* 매일 3시 00분에 실행 */
0 0,12 * * * /root/bin/backup.sh /* 매일 0시 00분과 12시 00분에 실행 */
0 3 * * 0 /root/bin/backup.sh /* 매주 일요일 3시 00분에 실행 */
0 3 * * 1,3 /root/bin/backup.sh /* 매주 월요일, 수요일 3시 00분에 실행 */
0 3 1 * * /root/bin/backup.sh /* 매월 1일 3시 00분에 실행 */
0 3 1,15 * * /root/bin/backup.sh /* 매월 1일 15일 3시 00분에 실행 */
0 3 1 3,6,9,12 * /root/bin/backup.sh /* 3월 6월 9월 12월 1일 3시 00분에 실행 */
--------------------------------------------
0 3 1 * 0 /root/bin/backup.sh
-> (X) 매월 1일이 일요일날일때만 3시00분 실행
-> (O) 매월 1일과 매주 일요일 3시 00분에 실행
--------------------------------------------
-매월 첫째주 일요일에 실행하게 하려면?
-> crontab + script.sh
# crontab -l
0 3 * * 0 /root/bin/script.sh
# vi /root/bin/script.sh
----------------------------------
...... (중략) ....
DAY=`date +%d`
if [ $DAY -le 7 ] ; then
/root/bin/backup2.sh
fi
...... (중략) ....
-----------------------------------
-> date의 날짜만 추출하여 DAY에 넣고 DAY가 7(일)보다 작거나 같을때만 실행
[예] at 명령어의 실무예(at CMD)
# cat /root/bin/backup.sh
-------------------------------------------------
(백업 스크립트 내용 예제)
cd /home
tar cvzf /backup/home.`date +%m%d`.tar.gz .
--------------------------------------------------
(현재) # /root/bin/backup.sh (# CMD)
(지정된 시간) # echo /root/bin/backup.sh | at 1200 (# echo CMD | at <시간>)
[예] 컴퓨터 끄기 예약
# at now +30 min (# echo "shutdown -r now" | at now +30 min)
--------------------------------
at> shutdown -r now
at> <CTRL + D>
--------------------------------
- 특정 사용자만 crontab 명령어를 사용하게 하는 방법
-> at 명령어는 한번만 실행되고 종료되는 명령어이기 때문에 제한을 두지 않지만 crontab 명령어는 계속 실행되므로 아무나 사용하게 되어 잘못 사용되면 위험해 질 수 있다. ( 사용자가 부하가 많이 걸리는 CMD를 crontab에 올려둘경우 )
# ls -l /etc/cron.{deny,allow} /* cron.deny 나 cron.allow이 있는지 알아본다 */
# cat /etc/cron.deny
-> cron.deny 파일에 적힌 사용자 ID는 명령어를 사용할 수 없다. ( 한 줄당 하나의 ID )
# cat /etc/cron.allow
-> cron.allow 파일에 적힌 사용자 ID만 명령어를 사용할 수 있다.
[참고] 두개의 파일이 모두다 있고 두 파일 모두 user01이 포함된 경우
-> user01 사용자는 crontab 명령을 사용할 수 있다.
cron.allow 파일이 있으면 .dney 파일은 확인하지 않는다.
'Linux > Linux Server' 카테고리의 다른 글
raw 디스크 부팅시 자동 연결 (0) | 2019.03.21 |
---|---|
백업관리 (0) | 2017.09.06 |
사용자 그룹 관리 (0) | 2017.09.05 |
부팅과정 (0) | 2017.09.04 |
Software 관리_Source file (0) | 2017.09.01 |