개요
`cronrontab 파일을 읽어 지정된 시간에 프로그램 및 스크립트를 실행하는 프로세스 입니다. cron 이 실행하는 프로그램 및 스크립트는 cron 의 자식 프로세스가 되며, 그 결과 cron 의 실행 환경을 상속 받습니다. 이 실행 환경은 환경변수, 작업 디렉토리 등으로 구성되며, 이것이 사용자가 명령줄로 실행할 때는 잘 실행되었던 스크립트가 cron 으로 실행시 실패를 야기합니다.
예를 들어, cron 을 사용하여 python 스크립트를 실행할 경우, 스크립트 내부에서 불러오는 파일의 경로가 맞지 않아 실행되지 않습니다.
원인 (cron job 의 현재 디렉토리)
명시적으로 cd
등을 사용하여 디렉토리를 이동하지 않는다면 cron이 스크립트를 실행하기 위해서 해당 스크립트가 위치한 디렉토리로 이동할 이유는 없습니다. 따라서 cron은 사용자의 홈 디렉토리에서 스크립트를 실행합니다. 이 때문에 쉘 스크립트에 포함되어 있는 상대 경로는 사용자가 해당 폴더로 이동하여 실행할 때와 다른 결과가 발생하게 됩니다.
수정
python의 os 모듈을 사용하여 상대 경로를 절대 경로로 변경하였습니다.job`을 사용할
Traceback (most recent call last):
File "/home/ubuntu/cutline/Server/seoul.py", line 16, in <module>
cred = credentials.Certificate(
File "/home/ubuntu/.local/lib/python3.8/site-packages/firebase_admin/credentials.py", line 82, in __init__
with open(cert) as json_file:
FileNotFoundError: [Errno 2] No such file or directory: '/home/ubuntu/cutline/Server/Server/spsupply.json'
cred = credentials.Certificate('spsupply-cutline.json')
import os
cred = credentials.Certificate(
os.path.join(dir_path, 'spsupply-cutline.json'))
'운영체제' 카테고리의 다른 글
[Linux] Booting 시 Script 실행하기 (0) | 2021.12.19 |
---|---|
[PowerShell] 스크립트 실행 정책 변경 (0) | 2021.12.16 |
[Ubuntu] Offline package 설치 (1) | 2021.06.24 |
[linux] Self-signed certificate 를 신뢰할 수 있는 인증서로 추가하기 (0) | 2021.06.18 |
[리눅스] Linux From Scratch (10.1) (0) | 2021.04.28 |