System/Linux

[Linux] 작업 예약 명령어: cron

Yoonsoo Park 2024. 9. 21. 23:02

한 회사의 서버 엔지니어가 되어 직원들이 출근하기 전인 오전 5시에 백업을 해야한다고 생각해보자. 하루 이틀 정도는 일찍 출근할 수 있겠지만 매일 해야 한다고 생각하면 정말 워라벨은 꿈도 꿀 수 없는 일이 따로 없을 것이다. 이러한 고통을 해소시켜줄 수 있는 소프트웨어가 바로 cron이다. cron은 주기적으로 반복되는 시스템 작업을 예약하는 소프트웨어이다. 주로 데몬인 crond, 설정 파일인 /etc/crontab을 이용해서 사용한다. 

*데몬(daemon): 백그라운드에서 항상 서비스를 제공중인 소프트웨어

 

작업 예약 관리 명령어 

  • vi /etc/crontab
    • /etc/crontab: 관리자(root)시스템 관리를 목적으로 설정한 예약 내용이 등록되는 곳 (시스템 전역에 영향) 
    • 임의의 사용자를 지정하여 예약할 수 있다
분  시  일  월 요일   [사용자명]  [실행시킬 파일명]

<vi /etc/crontab>

  • crontab -e
    • edit, 새로운 작업 예약 추가/수정/삭제 (일반 사용자가 cron 설정 시 사용)
    • /var/spool/cron/ 디렉토리에 사용자 별 파일로 저장됨
분  시  일  월  요일  [수행할 명령]
  • crontab -l
    • list, 현재 설정된 crontab 작업 확인
  • crontab -r
    • remove, 설정된 모든 crontab 작업 삭제 (수정은 -e)
  • crontab -u [계정 명] [옵션]
    • 일반적으로 사용자는 자신의 cron 작업만 수정 가능하다. 하지만 관리자(root)는 -u를 사용하여 특정 사용자의 cron 작업을 확인(-l)/수정(-e)/삭제(-r) 가능하다

<cron 관리 명령어 사용 예시>
</var/spool/cron/ 디렉토리는 root 권한으로만 확인 가능>

 

작업 예약 설정 예시

30 5 * * * tar -zcvf /backup/movie.tar.gz /movie/
=> 매월 매일 모든 요일 5시 30분에 movie 디렉토리의 파일을 압축한 tar 파일을 backup 디렉토리에 저장하라

*  *  * *  *  echo "I am a boy" > /dev/tty2 
=> 매분 tty2번 콘솔로 "I am a boy" 이라는 메세지를 출력하라

*요일 설정은 일요일(0), 월요일(1), 화요일(2)... 방식으로 설정한다

 

 

 

힘들지만 오늘도 해낸 나를 위한 한 마디,

"어떤 일에서든 추종자에 머물지 말고, 적극적으로 배우는 사람이 돼라", Jim Rohn

 

"수동적으로 따라가는 공부를 하지 말고, 주체적으로 질문하고 리딩하는 공부를 하자"