2015-01-21 5 views
0

나는 소스로 사용할 변수가 들어있는 파일 경로를 Bash 스크립트의 인수로 전달합니다. 파일이 Windows에서 생성되면 차이가있을 수 있습니다.Cron 작업이 파일을 "보지 못했습니다"

다음 검사가 수행됩니다 내가 수동으로 스크립트를 실행하면

CONFIG_FILE=$1 
if [[ -f ${CONFIG_FILE} ]]; then 
    echo "Is a file" 
    . ${CONFIG_FILE} 
else 
    echo "Not a file" 
fi 

는 명령 줄에서 검사가 미세하고 변수를 공급받을. 내가

*/1 * * * * /full/path/to/script.sh /full/path/to/configfile 

를 사용하여 크론 작업을 설정할 때

그러나, 나는 얻을 "파일 없음"인쇄.

가 나는이 해결하기 위해 온라인으로 발견 된 모든 단일 설치하려고했습니다. 프로파일 (모두 소싱
    1. 모두의 crontab 스크립트 자체에 환경 변수 설정 (PATH & SHELL)을/등/profile 및 . /home/user/.bash_profile)를 crontab (스크립트 실행 전)과 스크립트 자체에 모두 포함시켜야합니다.
    2. -u 사용자 매개 변수의 crontab을 실행하려고하지만,
    3. (I 이미 사용자로 누가해야 설정은 crontab을 로그인하고 같이하고, 이해가되지 않습니다)이 대한 권한이 없습니다

    스크립트를 실행해야하는 적절한 사용자로 crontab을 설정합니다. 사용자는 파일 위치에 대한 액세스 권한을 갖습니다 (명령 행에서 스크립트를 실행하여 볼 수 있음).

    다음에 시도 할 수있는 것에 대한 추가 정보를 찾고 있습니다.

  • 답변

    0

    다른 시도가 발견되어 효과가있었습니다. cronjob 줄에 -q 플래그를 추가했습니다.

    */1 * * * * /path/script.sh /path/config-file -q 
    

    출처 : Cron Job error "Could not open input file"

    누군가가 어떤 역할을합니까 나에게 설명해 주시겠습니까? 나는 배쉬에서 그렇게 지식이 많지 않다.

    +0

    '-q'는'script.sh'에 대한 옵션이며, 소스에 접근하지 않고 무엇을하는지 알 수 없습니다. – tripleee

    +0

    @treepleee,'-q'는 관련이 없습니다. 스크립트는 결코 그것을 해석하지 않습니다. cron 줄에서는 설정 파일 매개 변수가 줄의 마지막 매개 변수가 아니므로이 파일 인수에'\ r '이 없어야합니다. –

    +0

    @KarelKubat 좋은 추측이지만 그럼에도 불구하고 추측입니다. 우리는 스크립트의 전체 소스를 보지 않고는 말할 수 없습니다. – tripleee

    1

    여기에 나와있는 것은 /path/config-file 뒤에 별도의 인수가 있는지 확인하는 것입니다. 당신의 원래 문제는 유닉스에서 config 파일이 /path/config-file\r (후행에주의하십시오.)으로 명시된 것 같습니다. -q\r 인수를 추가하여 구성 파일 자체가 캐리지 리턴을 "제거"하도록합니다. 그 문제에 대해 -q\r 대신 blabla\r을 추가 할 수 있습니다. 스크립트는 그 여분의 인수를 절대로 해석하지 않습니다. 하지만 cron 줄에 넣으면 설정 파일 인수가 "보호"됩니다. 그 뒤에 오는 내용이 있기 때문에 그 것입니다.

    DOS 스타일 (\r\n 터미네이션 라인) 대신 cron 정의가 유닉스 스타일 (\n terminted lines)인지 확인하십시오. 유닉스 박스에는 아마 dos2unix 유틸리티가있을 것입니다.

    crontab -r을 사용하여 유닉스에서 crontab을 제거한 다음 crontab -e을 사용하여 crontab을 다시 만들 수 있습니다. MS-DOS에서 생성되거나 파생 된 파일은 업로드하지 마십시오.

    +0

    나는 스크립트에서 이미 캐리지 리턴 변수를 "정리"하는 메커니즘을 가지고 있으므로 테스트하기 전에 CONFIG_FILE 변수에 적용했습니다. -q 플래그). 이 통찰력에 감사드립니다! – dbu