cron - 주기적으로 실행될 작업
예약
at - 한번만 실행될 작업
예약
cron 서비스 데몬은 crond.
at 서비스 데몬은 atd.
crontab 형식 및 옵션
#crontab --help
usage: crontab [-u user] file
crontab [-u
user] [ -e | -l | -r ]
(default operation is replace, per
1003.2)
-e (edit user's crontab)
-l (list user's
crontab)
-r (delete user's crontab)
-i (prompt
before deleting user's crontab)
crontab 설정은 아래와 같다.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin (경로 명이 한정 되어 있기때문에 useradd 명령어 입력 시 /user/sbin/useradd 로 경로명까지 입력 해주서야 한다.)
MAILTO=root
HOME=/
#--- 여기까지는 cron 작업을 위한 환경변수
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root
run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4
1 * * root run-parts /etc/cron.monthly
#-- 여기는 주기적인 실행을 위한 설정 및 실행할 디렉토리.
형식:
분 시 일 월 요일 권한 실행명령 실행파일및 디렉토리
분: 0 ~ 59
시: 0 ~ 23
일: 1 ~ 31
월: 1 ~ 12
요일 : 0 ~ 6
예를 들면 아래내용은
22 4 * * 0 root run-parts /etc/cron.weekly
일요일 오전 4시 22분이 되면 root 권한으로 /etc/cron.weekly 에 있는 파일을 실행한다는 의미.
22 4 * * 0 init 0
일요일 오전 4시 22분에 되면 종료 된다. (하지만 안된다. init 경로 명이 없어서)
22 4 * * 0 /sbin/init 이렇게 해주어야 한다.
exm> 로그 보기
[root /var]$ cd log
[root /var/log]$ ls cron*
cron cron.1 cron.2
[root /var/log]$ ls -l cron*
-rw------- 1 root root 5832 6월 20 21:01 cron
-rw------- 1 root root 4557 6월 16 20:52 cron.1
-rw------- 1 root root 2063 6월 9 20:15 cron.2
[root /var/log]$ cat cron
Jun 16 20:53:21 centos anacron[4449]: Job `cron.daily' terminated
Jun 16 20:53:21 centos anacron[4449]: Normal exit (1 jobs run)
Jun 16 21:01:01 centos crond[5514]: (root) CMD (run-parts /etc/cron.hourly)
Jun 16 22:01:01 centos crond[6802]: (root) CMD (run-parts /etc/cron.hourly)
이하 생략
[root /var/log]$ vi cron (cron 실행 유무만 알수 있고 어떤 에러 인지느 알수 없다.)
[root /var/log]$ vi messages
[root /var/log]$ vi cron (편집기로 볼때 색상이 이상하게 단색으로 나온다 )
단색으로 나올 경우 vi 편집기에서 :set syntax=messages 를 입력하면 된당.
[root /var/log]$ mail (에러 메시지는 메일로 전송 된다. 해당 메일 번호 입력하면 확인 가능)
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/root": 7 messages 7 unread
>U 1 logwatch@localhost.l Wed Jun 11 20:28 143/4365 "Logwatch for centos (Linux)"
U 2 logwatch@localhost.l Thu Jun 12 20:30 132/4074 "Logwatch for centos (Linux)"
U 3 logwatch@localhost.l Fri Jun 13 20:47 129/3889 "Logwatch for centos (Linux)"
U 4 logwatch@localhost.l Mon Jun 16 20:52 43/1554 "Logwatch for centos (Linux)"
U 5 logwatch@localhost.l Tue Jun 17 20:44 254/6574 "Logwatch for centos (Linux)"
U 6 logwatch@localhost.l Wed Jun 18 20:32 185/5022 "Logwatch for centos (Linux)"
U 7 logwatch@localhost.l Fri Jun 20 20:23 93/2992 "Logwatch for centos (Linux)"
&
백업 받기
[root /root]$ ls -d /etc /var/log /home (이런경로를 보통 백업 받는다.)
/etc /home /var/log
[root /root]$ mkdir /var/backup
[root /root]$ cd /home
[root /home]$ ls
fuser1 fuser4 tuser1 tuser4 unix10 user2 xuser1 zuser10 zuser3 zuser7
fuser2 fuser5 tuser2 tuser5 unix3 user3 xuser5 zuser11 zuser4 zuser8
fuser3 shpark tuser3 unix1 user1 user5 zuser1 zuser2 zuser5
[root /home]$ cp -r user3 /var/backup (이건 잘못했다 백업을~~)
[root /home]$ ls -l /var/backup (파일 권한 및 시간등이 변경 되었다.ㅜㅜ)
합계 4
drwx------ 4 root root 4096 6월 20 21:26 user3
[root /home]$ [root /home]$ rm -rf /var/backup/* (지우고 다시 하자)
[root /home]$ alias rm
alias rm='rm -i'
[root /home]$ cp -rp user3 /var/backup (p 옵션을 넣어서 백업하니 속성이 변경 안되었다.~~올~
)
[root /home]$ ls -l /var/backup/
합계 4
drwx------ 4 user3 user3 4096 6월 5 22:26 user3
-bash: p: command not found
[root /home]$
[root /home]$
[root /home]$
cron 사용 권한 설정
/etc/cron.allow 파일이 있는경우 cron.allow 에 기록이 된 사용자만 cron 을 사용할 수
있다.
/etc/cron.allow 이 없고 /etc/cron.deny 파일만 있는경우 /etc/cron.deny 에 기록이 안된 사용자만
cron을 사용할 수 있다.
두 파일이 모두 없으면 root 를 제외하고 아무도 cron을 사용할 수 없다.
at
- 주기적으로 반복 실행할 수 없고 예약된 시간에 한번만 실행한다.
주요옵션
at -l ; 예약된 작업 보기
atq ; 예약된 작업보기
atrm ; 예약된 작업삭제하기
작업예약하기 형식
at 예약날짜 및 시간
ex) at 03pm
at 07am
at -t 0809201830 => 2008년 9월 20일
18시 38분 , -t 날짜 및 시간을 표기하기 위한 옵션
at now + 1 hour
at now + 10
min
at now + 2 days
at now + 1 hour -f /usr/sbin/poweroff
=> 1 시간뒤에 시스템을 끈다.(-f 는 실행파일명을 적기 위한 옵션)
ex 2)
[root@/]# at -t 09201830
at> httpd start
at> <EOT>
job
19 at 2008-09-20 18:30
at 사용권한 (man at 중에서...)
If the file /etc/at.allow exists, only usernames mentioned in it are allowed
to use at.
If /etc/at.allow does not exist, /etc/at.deny is checked, every
username not mentioned in it is then allowed to use at.
If neither exists,
only the superuser is allowed use of at.
An empty /etc/at.deny means that
every user is allowed use these commands, this is the default configuration.
'Linux' 카테고리의 다른 글
14일 마운트 공부 (0) | 2014.06.24 |
---|---|
13일 차 리눅스 파일시스템 및 마운트 (0) | 2014.06.23 |
11일차 특수 퍼미션 cron, at 명령어 (0) | 2014.06.19 |
10일차 Process 관리 (0) | 2014.06.18 |
9일차 파일 권한(Permission) (0) | 2014.06.17 |