O crontab aceita comandos com várias linhas conforme o shell é esperado?

1

Queremos executar a seguinte linha toda vez às 00:00 da noite

Dose esta linha é válida em comandos crontab ou cron job recrite com várias linhas?

0 0 * * * find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \)     -printf ' %T@ %b :%p
0 0 * * * find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \)     -printf ' %T@ %b :%p%pre%' |    sort -zk 1,1 -k2,2rn |    gawk -v RS='%pre%' -v ORS='%pre%' '
     {du += 512 * $3}
     du > 10 * (2^30) && $1 == "WSP" {
       sub("[^:]*:", ""); print
     }' | xargs -r0  rm -f
' | sort -zk 1,1 -k2,2rn | gawk -v RS='%pre%' -v ORS='%pre%' ' {du += 512 * $3} du > 10 * (2^30) && $1 == "WSP" { sub("[^:]*:", ""); print }' | xargs -r0 rm -f
    
por yael 09.08.2018 / 18:36

1 resposta

5

Não, seu exemplo não funcionará. Você tem que escrever o comando inteiro em uma única linha. Considere escrever um script e apenas chamar o script do cron.

Por exemplo:

$ cat mycron.bash
#!/bin/bash
find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \) \
     -printf ' %T@ %b :%p
0 0 * * * mycron.bash
' | \ sort -zk 1,1 -k2,2rn | \ gawk -v RS='
$ cat mycron.bash
#!/bin/bash
find . -type f \( -name '*.wsp' -printf WSP -o -printf OTHER \) \
     -printf ' %T@ %b :%p
0 0 * * * mycron.bash
' | \ sort -zk 1,1 -k2,2rn | \ gawk -v RS='%pre%' -v ORS='%pre%' ' {du += 512 * $3} du > 10 * (2^30) && $1 == "WSP" { sub("[^:]*:", ""); print }' | xargs -r0 rm -f
' -v ORS='%pre%' ' {du += 512 * $3} du > 10 * (2^30) && $1 == "WSP" { sub("[^:]*:", ""); print }' | xargs -r0 rm -f

Então sua entrada no crontab seria algo assim:

%pre%     
por 09.08.2018 / 18:54

Tags