crontab에서 실행할 때 환경 변수가 아래 첨자로 전달되지 않습니다.

crontab에서 실행할 때 환경 변수가 아래 첨자로 전달되지 않습니다.

wrapper.sh내부적으로 다른 스크립트를 실행하기 위해 crontab을 사용하는 스크립트(예: ) 중 하나를 실행하려고 합니다 . 아무런 문제 없이 잘 작동합니다.

환경 파일(비밀번호 데이터베이스 및 경로 저장)을 생성하고 기본 스크립트( wrapper.sh)를 실행하려고 하면 래퍼 내부에서 호출되는 스크립트에 cron 항목을 사용할 수 없습니다.

참고: cron의 스크립트 앞에 env 파일 위치를 추가하여 PATH를 변경하려고 시도했지만 여전히 작동하지 않습니다.

9 9 * * * . /$SOMEPATH/some.env; /$SOMEPATH/wrapper.sh

환경 스크립트와 wrapper.sh동일한 경로에 있습니다. cron이 실행되면 환경 변수가 래퍼에 전달되지만 래퍼 내부에서 호출되는 스크립트에는 전달되지 않습니다. 또한 /var/mail/$userenv 파일에 대해 "해당 파일이나 디렉터리가 없습니다"라는 이메일을 받게 됩니다 . 여러 게시물을 살펴봤지만 해결책을 찾을 수 없습니다.

답변1

$SOMEPATH에 정의되어 있지 않으므로 cron소스 crontab행을 가져오려는 시도가 /$SOMEPATH/some.env실패합니다. ( //some.env존재하지 않는 한.)

디버깅 cron관련 질문에 대해서는 다음과 같이 기록합니다.표준 에러메시지(자체 메시지 포함)는 로컬 사용자의 사서함으로 전송됩니다. 메일 클라이언트가 설치되어 있지 않은 경우( mail또는 mailx) 비슷한 방법을 사용하여 다음 메시지를 읽을 수 있습니다.

less /var/mail/$USER

아니면 진정으로 보편적이기를 원한다면

"${PAGER:-less}" "${MAIL:-/var/mail/${USER:-${LOGIN:-$(whoami)}}}"

관련 정보