O script de shell retorna o código de saída 126 do crontab

3

Entrada do Crontab:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * *  /FinalSync.sh $(/bin/date --date="5 days ago" +\%d_\%m_\%Y) || echo $? >> log

OR

 * * * * *  /FinalSync.sh $(date --date="5 days ago" +\%d_\%m_\%Y) || echo $? >> log

Tentei tanto

Tem 126 como código de erro no arquivo de log

Shell Script

#! /bin/sh

source=/Source/$1
destination=/Destination
folderParam=$(basename $source)
if /usr/bin/rsync -avh -r $source $destination; then
   cp /FolderCopyStatus/Success   /Status/Success_$folderParam
else
   cp /FolderCopyStatus/Failure   /Status/Failure_$folderParam
fi

O resultado de ls -l @ilkkachu

-rw-r--r-- 1 root root 299 Oct 17 16:20 /FinalSync.sh
    
por HDev007 17.10.2016 / 15:26

1 resposta

3

Como sugerido no meu comentário sobre sua pergunta anterior, o código de erro 126 parece implicar que você não tem permissão para executar o script ou um comando dentro dele (veja link ). Isso é estranho, porque crontab deve ser um processo root . tente o seguinte:

chmod +x /FinalSync.sh

Isso poderia ajudar. Caso contrário, o problema pode vir do seu comando cp (talvez você esteja tentando escrever em algum lugar que não deveria?). Tente também \cp para evitar o aliasing (para que quem quer que inicie o script, ele sempre se comportará da mesma forma).

    
por 17.10.2016 / 15:39