![Cronjob은 다른 스크립트를 호출하는 스크립트를 실행합니다.](https://linux55.com/image/8527/Cronjob%EC%9D%80%20%EB%8B%A4%EB%A5%B8%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%ED%98%B8%EC%B6%9C%ED%95%98%EB%8A%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 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
홍보 스크립트 에 추가할 수 있습니다 .