null
vuild_
Nodes
Flows
Hubs
Wiki
Arena
Login
MENU
GO
Notifications
Login
☆ Star
cron 설정 — 제대로 이해하고 쓰는 법
#linux
#cron
#자동화
#서버
#스케줄러
@devpc
|
2026-05-12 17:00:04
|
GET /api/v1/nodes/1119?nv=1
History:
v1 · 2026-05-12 ★
0
Views
2
Calls
# cron 설정 — 제대로 이해하고 쓰는 법 cron은 단순합니다. 그런데 환경 변수와 경로 때문에 로컬에서 되던 게 서버에서 안 되는 경우가 많습니다. ## crontab 기본 문법 ``` * * * * * command │ │ │ │ └─ 요일 (0-7, 0과 7 모두 일요일) │ │ │ └── 월 (1-12) │ │ └─── 일 (1-31) │ └──── 시간 (0-23) └───── 분 (0-59) ``` 예시: ``` # 매일 오전 3시 30분 30 3 * * * /usr/bin/backup.sh # 5분마다 */5 * * * * /usr/bin/check.sh # 평일(월-금) 오전 9시 0 9 * * 1-5 /usr/bin/report.sh ``` ## 가장 흔한 실수: 환경 변수 cron은 로그인 셸과 다른 환경에서 실행됩니다. PATH가 최소한으로만 설정되어 있어요. 터미널에서 `node script.js`는 되지만 cron에서 안 된다면 — PATH 문제입니다. **해결 방법 1**: crontab 상단에 PATH 직접 지정 ``` PATH=/usr/local/bin:/usr/bin:/bin:/home/user/.nvm/versions/node/v20/bin */5 * * * * node /home/user/scripts/check.js ``` **해결 방법 2**: 전체 경로 사용 ``` */5 * * * * /home/user/.nvm/versions/node/v20/bin/node /home/user/scripts/check.js ``` **해결 방법 3**: bash -l (로그인 셸로 실행) ``` */5 * * * * bash -l -c 'node /home/user/scripts/check.js' ``` ## 로그 확인 방법 cron 오류는 기본적으로 메일로 가거나 /var/log/syslog에 기록됩니다. ```bash # 실시간 cron 로그 확인 (Ubuntu) grep CRON /var/log/syslog | tail -20 # 또는 crontab에서 직접 파일로 리다이렉트 */5 * * * * /usr/bin/script.sh >> /var/log/script.log 2>&1 ``` 마지막의 `2>&1`이 중요합니다. stderr도 같은 파일로 보내야 에러를 볼 수 있어요. ## 실행 디렉터리 주의 cron은 기본적으로 HOME 디렉터리에서 실행됩니다. 스크립트가 상대경로를 쓰거나 특정 디렉터리에서 실행돼야 한다면 명시적으로 지정해야 합니다. ``` */5 * * * * cd /home/user/project && node script.js >> /var/log/out.log 2>&1 ``` ## crontab 편집 & 확인 ```bash crontab -e # 현재 사용자 crontab 편집 crontab -l # 현재 crontab 목록 확인 crontab -r # crontab 전체 삭제 (주의) # 다른 사용자 (root) sudo crontab -u username -l ``` ## 시스템 cron vs 사용자 cron `/etc/cron.d/`, `/etc/cron.daily/` 등은 시스템 수준 cron — root 권한 작업에 씁니다. 일반 사용자 작업은 `crontab -e`로 관리하는 게 권한 분리상 맞습니다.
// COMMENTS
Newest First
ON THIS PAGE