카페자리 서비스를 위해 열어둔 우분투 서버에서
특정 활동만 crontab 작업이 진행되지 않음을 확인했다.
/var/log/syslog를 통해 확인해본바,
아래와 같은 에러 로그가 찍혀있었다.
(CRON) info (No MTA installed, discarding output)
구글링해보니 postfix라는 애를 설치하면 된다는데..
sudo apt install postfix
명령어를 통해 설치해봤으나 별 효과는 볼 수 없었다.
좀더 crobtab에 대해 검색해보니,
crontab 작업이 실패하면 이 내용을 메일로 알려주는데,
이때 필요한 패키지가 postfix인듯 했다.
다시말해 로그로 찍힌 에러 문구는,
이미 crontab 작업이 실패한 뒤 이를 메일링하는 과정에서
발생한 것이므로 애초에 작업이 실패한 것과는 관련이 없었던 것이다.
오타난 부분이 있는지 등 많은 시도를 해봤으나 실행이 안돼서
마지막으로 해본 것은 그냥 새 함수를 만드는 것이었다.
# <기존방식>
# /cron/daily_activity_stack.py에서 함수 정의
def clear_daily_activity_stack():
...
# /settings.py에서 작업설정
CRONJOBS = [
('* * * * *', 'cron.daily_activity_stack.clear_daily_activity_stack')
]
이런 식이었다면, 그냥 같은 로직을
새 파일에 작성해보았다.
# <새로운 방식>
# /cron/activity_stack.py에서 함수 정의
def clear_activity_stack():
...
# /settings.py에서 작업설정
CRONJOBS = [
('* * * * *', 'cron.activity_stack.clear_activity_stack')
]
보면 알 수 있듯, 그냥 경로와 함수명만 바뀌었다.
그런데 이건 실행이 됐다..
원인도 모르겠고 왜 해결이 된건지도 알수가 없다.
그리고 10개가 넘는 cron 작업중 왜 얘만
에러가 났는지도 모르겠다.