티스토리 뷰

개발/Linux

crontab 사용시 권한 주의

Jaeyeon Baek 2018.03.04 16:28

crontab 은 어떤 주기적인 처리를 꽤 영리하게 도와주는 Linux 시스템에 없어서는 안될 스케줄러이다. 특정시간에  파일시스템을 정리한다던가 주기적으로 알람을 발송한다던가 또는 시스템 자원을 모니터링한다던가 등등 많은 활용분야가 있겠다.

이렇게 편한 크론탭을 사용할 때 잊어서는 안되는 중요한 사실이 있다. 바로 스케줄러에 의해 실행되는 job[cron] 권한으로 실행된다는 점인데 그렇기 때문에 우리는 아래 두가지 사항을 항상 체크해야 한다.

  • 스케줄링 하려는 명령어의 PATH (환경변수)가 cron 에게 있는지.
  • 스케줄링 하려는 명령어를 cron 이 실행시킬 수 있는지 ( = 권한이 있는지 )

첫번째 내용의 경우에는 그냥 습관처럼 명령어의 절대경로를 써주면 해결된다. 극단적인 예를들어 리눅스의 date 명령어를 crontab 에서 실행시킨다면 /usr/bin/date 와 같이 절대경로를 포함시키면 된다는 의미다.

두번째 내용의 경우에는 특정 사용자의 디렉터리에 존재하는 명령어를 실행시키는 경우가 되겠다. crontab 은 사용자별로 관리되기 때문에 사실 흔한 케이스는 아니다. 아무튼 이때는 su 의 힘을 빌려서 아래와 같이 실행시켜주면 된다.

$ su - caley -c command

caley 라는 계정으로 셸을 로그인해서 command 명령어를 실행시키라는 의미로 생각하면 되겠다. 상당히 간단한 내용이지만 모르면 고생하는 경우가 있겠다. 이제 두가지 문제를 잘 피해서 crontab 에 스케줄을 등록하고 모니터링 하시면 되겠다. 일반적으로는 아래 경로를 통해서 실행되는 것을 확인하면 된다.

$ ls -al /var/log/cron /var/log/syslog

crontab 에 뭔가 등록해야 하는데 사용법을 잘 모르겠다면 아래 사이트를 참고해보도록 하자. 개인적으로는 인터넷에 널린 여러 사이트중에 crontab 을 제일 직관적으로 표현해주고 있다고 생각한다.

https://crontab-generator.org/

댓글
댓글쓰기 폼