내 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
홍보 스크립트 에 추가할 수 있습니다 .