Cronjob은 다른 스크립트를 호출하는 스크립트를 실행합니다.

Cronjob은 다른 스크립트를 호출하는 스크립트를 실행합니다.

내 cronjob은 다음과 같습니다

0 3 * * 0-6 somedir/promotionscript

그러나 Promotionscript는 실제로 somedir의 상위 폴더에 있는 다른 파일 "config"를 호출합니다.

#promotionscript
#!/bin/csh
source ../config

하지만 구성: 해당 파일이나 디렉터리가 없습니다. 그래서 cronjob이 특정 디렉터리에서 실행되고 있지 않다고 생각해서 일단 승격 스크립트 실행을 시작하면 특정 디렉터리에 대해 알지 못합니다. cronjob이 상위 폴더에서 구성을 찾도록 만드는 방법.

가능한 해결책 중 하나는 구성에 전체 경로를 추가할 수 있다는 것입니다.

source fullpath/config

그런데 cronjob이 전체 경로를 직접 인식하도록 하는 방법이 있나요?

답변1

dirname쉘 또는 쉘 스크립트의 이름에서 얻습니다 $0. 그런 다음 다음을 수행하십시오.

source `dirname $0`/../config

답변2

cd somedir을 사용하면 하드 코딩을 방지하기 위해 Promotionscript가 아니라 cronjob에 추가해야 합니다. 예를 들면 다음과 같습니다.

0 3 * * 0-6 cd somedir;promotionscript

그리고..운영자는 프로모션 스크립트에서 예상대로 작동합니다.

답변3

Cron은 홈 디렉터리에서 명령을 실행합니다. 이를 cd somedir홍보 스크립트 에 추가할 수 있습니다 .

관련 정보