Crontab

신동수·2024년 2월 15일
0

Server

목록 보기
3/9

crontab 기본 옵션

-e : crontab 편집기 실행 (vi처럼 사용)
-l : 현재 crontab 내용 확인
-r : 현재 crontab 삭제

crontab 작성 방법

[(0-59)] [시간(0-23)] [(1-31)] [(1-12)] [요일(0-7)] [실행할 명령]
  • 요일 : 1(월)-6(토) / 0과 7은 다 일요일

  • 특수기호

    • * : 모든 값 (매일, 매시, 매분 등)
    • - : 범위 지정
    • , : 여러 값 지정
    • / : 증분값
  • 작성 예시

# 매분 명령 실행
* * * * * [명령]

# 매일 0시 00분에 실행 
0 0 * * * [명령]

# 매주 월요일 0시 00분에 실행 
0 0 * * 1 [명령]

# 매일 0시, 12시에 실행 
0 0,12 * * * [명령]

# 매주 평일 8시에 실행 
0 8 * * 1-5 [명령]

# 매 10분마다 실행 
*/10 * * * * [명령]

스크립트로 작성

% echo "0 0 * * * /test.sh" | crontab -

위와 같이 crontab - 를 파이프 뒤에 써주면 들어가진다

그러나 이는 덮어쓰는거라서 밑에 추가해주려면 기존 크론탭 목록을 출력해준 후 같이 집어넣어주면 된다

% (crontab -l 2>/dev/null; echo "0 2 * * * /test.sh") | crontab -

참고로 2>/dev/null 은 에러는 버리고 출력만 하겠다는 뜻이다
그러나 이는 덮어쓰는거라서 밑에 추가해주려면 기존 크론탭 목록을 출력해준 후 같이 집어넣어주면 된다

% (crontab -l 2>/dev/null; echo "0 2 * * * /test.sh") | crontab -

crontab 전체 사용자 스케줄러 확인

crontab -l 을 쓰면 현재 계정의 스케쥴러만 확인이 가능하다.

일일히 들어가는 것은 귀찮은니 파일 형태로 저장되어있는 /var/spool/cron 디렉토리로 이동하면 계정단위로 저장되어 있는 스케쥴러를 볼 수 있다.

% cd /var/spool/cron

단, root 로 확인해야 한다.

# 모든 계정 확인
% for user in $(grep /bin/bash /etc/passwd | cut -f1 -d:); do crontab -u $user -l; done
profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글