우당탕탕
Linux cron job 설정하다가 저도 실수했던 부분들과 해결 방법 본문
Linux 서버에 cron job을 설정하다 보니 생각보다 자주 실수하는 부분들이 있더라고요. 저도 처음에는 예약 작업이 제대로 안 돼서 시간을 허비한 적이 많아요. 이번에 하나하나 문제를 해결하면서 알게 된 팁들을 정리해봤어요.
이 글에서는 cron job 설정 시 자주 겪는 실수, 환경 변수 문제, 권한 문제, 그리고 실행 결과를 제대로 확인하는 방법까지 구체적인 명령어와 함께 자세히 다룹니다. 저처럼 삽질하기 싫은 분들은 끝까지 읽어보세요.
Linux cron job 설정 실수하기 쉬운 부분들 관련 정보
제 환경과 버전부터 알려드려요
저는 Ubuntu 22.04 LTS에서 작업했고, cron은 기본적으로 시스템에 설치된 버전을 사용했습니다. 따로 설치 없이 기본 명령어인 cron 3.0pl1 환경이었어요.
크론탭 편집과 쓰기, 이렇게 하면 됩니다
가장 기본적인 설정은 crontab -e로 편집해서 사용하죠. 그런데 여기서 많이들 실수하는 게 환경변수 설정을 빼먹는 거에요.
# 매시간 30분에 backup.sh 실행하기 (잘 안 돌아가서 삽질했던 예)
30 * * * * /home/ubuntu/backup.sh
# 환경변수 PATH 지정 안 하면 "command not found" 에러 날 수 있음
# 그래서 꼭 PATH 포함해서 아래처럼 작성해줘야 해요
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
30 * * * * /home/ubuntu/backup.sh
# 혹은 스크립트 안에 PATH 설정을 넣는 방법도 있어요
cron은 기본적으로 일반 사용자 쉘과 다르게 환경 변수가 매우 제한적이라서, 스크립트 안에 필수 환경변수 설정을 넣거나 crontab 상단에 PATH를 꼭 지정해줘야 해요.
Linux cron job 설정 실수하기 쉬운 부분들 관련 정보
권한 문제로 실행이 안 될 때, 저는 이렇게 확인했어요
스크립트에 실행 권한이 없으면 당연히 안 되는데, 이걸 깜빡하는 분들 많더라고요. 저도 그랬고요.
# 권한 확인 및 부여 명령어
ls -l /home/ubuntu/backup.sh
chmod +x /home/ubuntu/backup.sh
또, 크론이 실행하는 사용자가 다를 수 있으니, 의도한 사용자 계정에서 설정했는지 꼭 확인해야 해요. 예를 들어 root가 아니라면 sudo crontab -e 여부를 잘 봐야 합니다.
실행 결과 확인은 이렇게 했더니 편했어요
cron job의 실행 로그가 기본적으로 별도로 나오지 않아서 헷갈릴 때가 많았는데, 저는 표준 출력과 표준 에러를 로그파일로 남기는 걸 추천해요.
# cronjob 예시: 출력과 에러를 로그 파일로 리다이렉션
30 * * * * /home/ubuntu/backup.sh >> /home/ubuntu/backup.log 2>&1
이렇게 하면 오류나 로그가 /home/ubuntu/backup.log에 쌓여서 나중에 기록을 확인할 수 있어요. 저는 이 방법 덕분에 문제가 생겨도 빠르게 원인 파악할 수 있었습니다.
여기서 삽질했던 부분들
가장 많이 막혔던 부분은 환경변수와 권한 문제였는데요, 한 번은 이렇게 에러가 났죠.
/bin/sh: backup.sh: command not found
이 에러가 왜 나나 한참 헤맸는데, 결국 PATH가 달라서 쉘이 스크립트를 못 찾았던 거더라고요. 그 뒤로는 항상 full 경로를 명시하거나 PATH 환경변수를 꼭 넣어요.
심화: 이것도 알면 좋아요
cron은 시스템별로 약간씩 동작 차이가 있을 수 있어서, 리눅스 배포판마다 기본 쉘 재설정 방법이나 로그 경로를 확인하는 걸 추천해요. 그리고 너무 자주 실행하는 작업은 시스템 부하로 이어질 수 있으니 주의하세요.
자주 물어보시는 것들
Q. cron이 실행할 때 파이썬 스크립트가 안 돌아가요. 왜 그럴까요?
A. 보통 경로 문제입니다. python 실행 경로나 가상환경 활성화가 안 돼서 그런 경우가 많아요. 크론에 가상환경 활성화 명령어도 함께 적거나, 절대 경로로 python 인터프리터를 지정해보세요.
Q. crontab -l을 했는데 설정이 안 보여요. 무슨 문제일까요?
A. 사용자별로 설정이 다릅니다. sudo crontab -l 명령어로 root 권한 크론탭을 확인해야 할 수도 있어요.
Linux cron job 설정 실수하기 쉬운 부분들 관련 정보
결국 cron job은 환경과 권한, 그리고 로그 관리가 핵심이라는 걸 느꼈습니다. 이 부분만 명확히 이해하면 삽질 확 줄일 수 있을 거예요. 다음엔 더 복잡한 자동화도 도전해보려 합니다.
'Linux' 카테고리의 다른 글
| Linux systemd 서비스 등록하면서 꼭 확인해야 할 체크리스트 (0) | 2026.06.01 |
|---|---|
| Linux 명령어 실무에서 매일 쓰는 것들 직접 써보며 정리한 팁 (0) | 2026.05.29 |
| Linux 명령어 실무에서 매일 쓰는 것들, 제가 직접 겪은 삽질과 해결법 (0) | 2026.05.23 |
| [Linux] 서버 장애 요인파악 순서 (0) | 2022.09.06 |
| [Linux/Ubuntu] 리눅스/우분투 스왑 파일(Swapfile) 생성 (0) | 2022.09.03 |
