Pentest Playbook

Linux crontab

요약

crontab -e #수정 페이지에 접근한다. (0~2를 입력해서 Editor에 접근)

* * * * * touch /tmp/1 #제일 하단에 명령줄 입력 및 저장

crontab -l #저장된 명령어 확인

리눅스에서 crontab을 이용해서 내가 원하는 작업을 특정 시간에 실행하도록 제어할 수 있다.

1. crontab 기본 설정 방식

*    *    *    *    *    {수행할 명령어}
┬    ┬    ┬    ┬    ┬
│    │    │    │    │
│    │    │    │    └──── 요일 (0 - 7) (0,7 일요일, 1=월, 2=화, 3=수, 4=목, 5=금, 6=토)
│    │    │    └───────── 월 (1 - 12)
│    │    └────────────── 일 (1 - 31)
│    └─────────────────── 시 (0 - 23)
└──────────────────────── 분 (0 - 59)

설정 방식에서 사용되는 특수문자 설명은 다음과 같다.

기호 의미 예시 설명
* 매번 * 매분, 매시 실행
, 목록 10,30 10분과 30분에 실행
- 범위 9-18 9시부터 18시까지 실행
/ 간격 */10 10분 간격으로 실행

유용한 설정 예시

단축어 (Shortcuts)

단축어 의미 실제 시간 기존 문법과 동일
@hourly 매시간 정각 매시 0분 0 * * * *
@daily 매일 자정 00시 00분 0 0 * * *
@weekly 매주 일요일 일요일 00시 00분 0 0 * * 0
@monthly 매월 1일 1일 00시 00분 0 0 1 * *
@yearly 매년 1월 1일 1월 1일 00시 00분 0 0 1 1 *
@reboot 부팅 직후 (재부팅 될 때마다) (해당 없음)
0 0 * * * /home/user/backup.sh
@daily /home/user/backup.sh

crontab 구조 - *이 위치한 부분은 분, 시, 일, 월, 요일을 순서대로 의미하고 모두 *로 설정하면 매 1분마다 라는 의미가 됩니다.

* * * * * /path /path

3. 사용예시

아래 내용은 1분마다 /home/{user}/test.txt의 파일을 /tmp에 복사하라는 의미

* * * * * cp /home/{user}/test.txt /tmp/ #1분마다
*/3 * * * * cp /home/{user}/test.txt /tmp/ #3분마다
0 * * * * cp /home/{user}/test.txt /tmp #매시 정각 0분에 실행

crontab 편집기에 입력한 후 저장 및 종료하면 아래와 같은 메시지가 출력되면서, 정상적으로 등록된 것을 알 수 있다.

crontab을 사용할 때 주요 명령어는 다음과 같다.

crontab -e #수정 페이지 접근
crontab -l #crontab 적용한 후, 적용 결과 확인
crontab -r #적용된 모든 예약내역 삭제
crontab -i #

Truble Shooting

  1. 절대경로 및 환경변수 문제
  1. 스크립트를 실행했을 때 출력 결과를 남기지 않을려면 /dev/null를 사용하는 방식
    * * * * * /home/user/script.sh > /dev/null 2>&1
    
ESC

💡 검색 팁

  • #T1572 - 태그로 검색
  • persistence - 키워드로 검색