[Linux] Shell Script를 crontab으로 실행할 때 발생하는 오류

hwwwa·2023년 1월 29일
0

개발 환경

  • MacOS
  • intel 7i / x86_64

오류 상황

  • shell을 단순 호출하였을 때에는 정상 동작하였지만 crontab으로 실행했을 때 오류 발생
  • date 명령어를 사용하였을 때, shell 단순 호출 시에는 요일이 의도한대로 한국어로 잘 나왔지만 crontab으로 실행 시에는 영어로 출력됨
  • jq와 같은 기본 명령어가 아닌 추가로 설치한 패키지를 읽어오지 못함

오류 원인

  • shell에 대한 설정은 /etc/profile, /etc/bashrc로 구성됨
    • /etc/profile 파일의 경우 로그인 shell(로그인 시에만)에 적용
    • /etc/bashrc 파일의 경우 shell이 생성될때마다 적용
  • 하지만 /etc/bashrc에 환경변수를 설정해주었으나 동일한 오류 발생
  • shell script 상단에 환경변수를 등록해주어 오류 해결‼️

오류 해결

언어가 영문으로 설정되는 오류

  • 로그인 shell의 언어는 한국어로 설정되어있지만, crontab에서 불러오는 환경변수에는 영문으로 설정되어 있음
    • [2023/01/27 (금)]이 아닌 [2023/01/27 (Fri)]로 출력됨
  • 현재 로그인 shell의 언어 설정 확인
    $ env | grep LANG                                     
    LANG=ko_KR.UTF-8
  • shell script 상단에 LANG 환경변수 작성
    #!/usr/bin/env bash
    export LANG=ko_KR.UTF-8

command not found

  • shell script 사용 시 기본 커맨드 외에도 별도로 설치한 패키지를 사용하였음
  • 스크립트에 사용한 jq command를 찾지 못함
    • PATH에 대한 환경변수를 읽어오지 못하였기 때문
  • 현재 로그인 shell의 PATH 환경변수 확인
    $ echo $PATH
    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
  • shell script 상단에 PATH 환경변수 작성
    #!/usr/bin/env bash
    export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

참고
https://kldp.org/node/64532
https://neouser.tistory.com/263
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=fromyongsik&logNo=40163069884

0개의 댓글