wrapper.sh
내부적으로 다른 스크립트를 실행하기 위해 crontab을 사용하는 스크립트(예: ) 중 하나를 실행하려고 합니다 . 아무런 문제 없이 잘 작동합니다.
환경 파일(비밀번호 데이터베이스 및 경로 저장)을 생성하고 기본 스크립트( wrapper.sh
)를 실행하려고 하면 래퍼 내부에서 호출되는 스크립트에 cron 항목을 사용할 수 없습니다.
참고: cron의 스크립트 앞에 env 파일 위치를 추가하여 PATH를 변경하려고 시도했지만 여전히 작동하지 않습니다.
9 9 * * * . /$SOMEPATH/some.env; /$SOMEPATH/wrapper.sh
환경 스크립트와 wrapper.sh
동일한 경로에 있습니다. cron이 실행되면 환경 변수가 래퍼에 전달되지만 래퍼 내부에서 호출되는 스크립트에는 전달되지 않습니다. 또한 /var/mail/$user
env 파일에 대해 "해당 파일이나 디렉터리가 없습니다"라는 이메일을 받게 됩니다 . 여러 게시물을 살펴봤지만 해결책을 찾을 수 없습니다.
답변1
$SOMEPATH
에 정의되어 있지 않으므로 cron
소스 crontab
행을 가져오려는 시도가 /$SOMEPATH/some.env
실패합니다. ( //some.env
존재하지 않는 한.)
디버깅 cron
관련 질문에 대해서는 다음과 같이 기록합니다.표준 에러메시지(자체 메시지 포함)는 로컬 사용자의 사서함으로 전송됩니다. 메일 클라이언트가 설치되어 있지 않은 경우( mail
또는 mailx
) 비슷한 방법을 사용하여 다음 메시지를 읽을 수 있습니다.
less /var/mail/$USER
아니면 진정으로 보편적이기를 원한다면
"${PAGER:-less}" "${MAIL:-/var/mail/${USER:-${LOGIN:-$(whoami)}}}"