본문 바로가기
Linux

12일차 cron 명령어.

by 삼성그룹이장 2014. 6. 20.




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