Linux redhat crontab + 매개변수가 있는 스크립트 실행

Linux redhat crontab + 매개변수가 있는 스크립트 실행

Red Hat crontab에 다음 줄을 추가했습니다.

스크립트를 실행하려면/var/scripts/info_from_all_sites.bash매주 금요일저녁 00:00

스크립트는 /var/RT/names.txt 파일을 매개변수로 가져와야 합니다.

따라서 스크립트는 이 파일의 모든 정보를 읽습니다.

 0 0 * * 5   /var/scripts/info_from_all_sites.bash /var/RT/names.txt 1>/dev/null 2>&1

내 질문은 - crontab의 스크립트에 파일을 매개변수로 추가해도 괜찮습니까?

아니면 파일을 큰따옴표로 묶어야 할 수도 있습니다.

 0 0 * * 5   /var/scripts/info_from_all_sites.bash "/var/RT/names.txt" ?

답변1

예, 이렇게 해도 괜찮습니다.

~에서crontab(5)수동:

"여섯 번째" 필드(줄의 나머지 부분)는 실행할 명령을 지정합니다. 행의 전체 명령 부분(개행 문자 또는 문자까지)은 cronfile 변수에 지정된 쉘에 의해 실행됩니다 %. 백슬래시( )로 이스케이프하지 않는 한 명령의 문자는 개행 문자로 변경되고 첫 번째 문자 이후의 모든 데이터는 표준 입력으로 명령에 전송됩니다./bin/shSHELL%\%

답변2

다음 crontab을 사용하여 동일한 문제가 발생했습니다.

0 23 * * * sudo -u myname /home/myname/bin/buildme.sh -f >> /home/myname/log.txt

Bash 스크립트에서는 이것을 사용하여 -f 옵션을 얻습니다.

while getopts ":f" opt; do
    case $opt in
        f)
            force_full=1
            ;;
        \?)
            echo "Invalid option: -$OPTARG" >&2
            ;;
    esac
done

그래서 어떤 이유로 cron을 통해 이것을 실행했을 때 옵션이 실행되지 않는다는 것을 알았습니다. 음, cronjob에 /bin/bash를 추가하면 이 문제가 해결됩니다. 새로운 크론탭은 다음과 같습니다:

0 23 * * * sudo -u myname /bin/bash /home/myname/bin/buildme.sh -f >> /home/myname/log.txt

관련 정보