crontab 구성에서 쉘 변수에 접근할 수 없습니다

crontab 구성에서 쉘 변수에 접근할 수 없습니다

cron 작업을 실행하는 동안 쉘 변수에 액세스하는 데 문제가 있습니다. 실제로 저는 두 개의 쉘 변수 값을 파일에 인쇄하는 작업을 만들었습니다 env.output.

$ crontab -esudo 사용자 없이 명령을 사용하여 cron 작업을 작성 중입니다 .

내 crontab 구성 파일은 다음과 같습니다.

# varibales
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
     /usr/games:/usr/local/games
[email protected]
HOME=/home/ubuntu
JOBS_PATH=${HOME}/cronjobs

# Jobs
* * * * * echo "$HOME and $JOBS_PATH" >> ${HOME}/env.output 2>&1

이제 file 의 내용을 보면 env.output다음과 같은 결과가 나옵니다.

/home/ubuntu and ${HOME}/cronjobs

예상하지 못한 일이군요.

내 출력이 다음과 같아야 합니다.

/home/ubuntu and /home/ubuntu/cronjobs

이 문제를 처리할 수 있는 방법을 제안해 주세요.

답변1

이는 cron 데몬의 제한 사항입니다. 이거부터 보세요크론탭 맨페이지:

값 문자열은 다음과 같습니다.~ 아니다환경 대체 또는 변수 대체를 위해 구문 분석되므로 다음과 같은 줄이 있습니다.

     PATH = $HOME/bin:$PATH

예상대로 작동하지 않습니다.

bash는 물결표( ~)를 $HOME. 따라서 다음을 사용하십시오.

JOBS_PATH=~/cronjobs

답변2

쉘 변수에 접근하는 데 문제가 있습니다

HOMEcrontab 상단에 정의된 것은 쉘 변수가 아니라 환경 변수입니다.

crontab 상단에서는 환경 변수를 참조할 수 없습니다. 쉘이 환경 변수를 처리하지 않아 확장되지 않고 문자 그대로 해석되지 않기 때문입니다.

수동으로 설정해야 합니다 JOBS_PATH.

# ...
JOBS_PATH=/home/ubuntu/cronjobs
# ...

관련 정보