Linux redhat crontab + roda o script com argumentos

0

Eu adiciono a seguinte linha ao crontab red-hat

para executar o script /var/scripts/info_from_all_sites.bash toda sexta-feira às 00:00 night

O script

deve obter como argumento o arquivo - /var/RT/names.txt

para que o script leia todas as informações deste arquivo,

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

minha pergunta é - está tudo bem em adicionar o arquivo como argumento ao script no crontab?

Ou talvez eu precise colocar o arquivo com aspas duplas como

 0 0 * * 5   /var/scripts/info_from_all_sites.bash "/var/RT/names.txt" ?
    
por yael 12.07.2016 / 12:02

2 respostas

0

Sim, não há problema em fazer isso.

No crontab(5) manual :

The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or a % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile. A % character in the command, unless escaped with a backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.

    
por 12.07.2016 / 12:15
0

Eu estava tendo o mesmo problema em que estava usando o seguinte crontab:

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

E dentro do script bash eu estava usando isso para obter a opção -f:

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

Então eu notei que a opção não estava sendo honrada quando eu fiz isso através do cron por algum motivo. Bem, adicionando / bin / bash ao cronjob, consertamos. O novo crontab é:

0 23 * * * sudo -u myname /bin/bash /home/myname/bin/buildme.sh -f >> /home/myname/log.txt
    
por 07.10.2018 / 15:46