개발 창고/Server

[CentOS7] crontab 활용하기

로이제로 2021. 1. 28. 10:04
반응형

 서버 개발을 하다 보면 서버 쪽에서 shell script를 만드는 경우도 가끔 있는데 (종특일지도) 제 기준으로 보면 다음과 같은 상황을 활용을 했었던 거 같습니다.

 

- samba로 만든 파일서버를 특정 시간 또는 일정 간격으로 다른 서버에 백업하는 경우

- node.js로 만든 크롤링 기능을 특정 시간 대에 실행 시키는 경우

- 일정 시간마다 웹서버의 성능을 리포트 형식으로 받아보려는 경우

 

 이 글을 보는 누군가는 이런 기능을 또 다른 방식 또는 samba나 node.js의 어떤 기능을 활용하여서도 가능할 겁니다. 하지만, 이 모든 건 각자의 스타일이니 디테일한 이야기에 대해서는 잠시 접어두도록 하겠습니다.

 

  crontab 확인하기

$> crontab -l

만약 이전에 crontab을 설정한 적이 없다면 다음과 같은 결과를 반환할 것이고

 

 no crontab for (로그인계정명) 

 

만약 이전에 crontab을 설정한 적이 있다면 다음과 같은 결과를 반환할 것입니다.

 

ex)

 */5 * * * * systemctl status vsftpd 

 

다음과 같이 설정한 명령어 내용이 표현됩니다.

 

실제로 이 내용들을 확인하려면 아래의 위치에서 확인 가능합니다.

 

$> /var/spool/cron

 

 보통 이곳은 root 권한으로 접근 가능한 경우가 많은데, 목록을 조회해 보면 다음과 같이 계정별로 설정된 crontab 파일을 확인하실 수 있습니다.

 

 

 여기서 사용자 계정으로 생성한 crontab을 확인하면 다음과 같은 결과를 확인하실 수 있습니다.

 

 ※ '사용자'라고 적혀있는 부분은 로그인 계정 정보로 만약 로그인 계정 정보가 myuser인 경우 'cat myuser'라고 명령어를 입력하면 위와 같은 결과가 확인됩니다.

 

*/10 * * * * java -version

  crontab 등록하기

 등록은 물론 /var/spool/cron에서 vi를 사용해서도 가능하지만 다음의 명령어로 어디에서도 설정이 가능합니다.

$> crontab -e

 

 

다음과 같이 편집할 수 있는 vi 에디터가 오픈됩니다.

 

등록은 '분-시-일-월-요일 명령어' 순으로 입력하면 되는데 위의 명령어를 기준으로 설명하면

 

 

요일 구분은 다음과 같습니다.

 

내용
0, 7 일요일
1 월요일
2 화요일
3 수요일
4 목요일
5 금요일
6 토요일

 

  crontab 로그 보기

 등록한 crontab의 로그가 정상적으로 수행되고 있는지 확인하려면 다음 명령으로 해당 시간대를 확인 가능합니다.

 

# 전체로그를 보려는 경우
$> cat /var/log/cron

# 실시간으로 쌓이는 로그르르 보려는 경우
$> tail -f /var/log/cron

 내용을 보면 해당 시간에 실행된 crontab명령뿐만 아니라 언제 crontab이 작성/수정 등이 되고 새로고침 되었는지 등이 로그에서 확인 가능합니다.

반응형