Tarefa não executada pelo crontab

2

crontab estranhamente não executa meu script, embora o script esteja rodando bem no terminal do shell. Eu já me certifiquei de que os scripts fossem separados uns dos outros por um novo espaço de linha. No entanto, desconfio do conteúdo do meu script. crontab executa run.sh , que seria executado posteriormente em main.sh .

Este é o /etc/crontab :

* * */3 * *        root  source /opt/db_maintain/run.sh

Este é o conteúdo de run.sh que chamaria main.sh de dentro:

#!/usr/bin/env bash

#********* Saman *********
TM=$(date --date='40 days ago' '+%F %T')
TARGET=/opt/db_maintain/main.sh
TIMESTAMP=$(echo ${TM} | tr --delete ': -')
export TIMESTAMP
source $TARGET "$TM"

Este é o começo de main.sh :

#!/bin/bash
##!/usr/bin/env bash
#
# main program entry point
#

source /opt/db_maintain/functions.sh
source /opt/db_maintain/constants.sh
source /opt/db_maintain/settings.sh
source /root/PASSWD_PGRS.sh

#read -s -t 0 -n 9999
#read -s -p "Enter password for ${USERNAME}: " PASSWORD
    
por Saman 29.05.2015 / 12:01

1 resposta

7

Use esta sintaxe no cronjob:

* * */3 * *        root  /bin/bash /opt/db_maintain/run.sh

Você usou source . Isso é um comando interno do shell de% código%. Portanto, ele só pode ser executado dentro de um shell bash ou através de um shell bash . O crontab apenas executa binários, não comandos shell. Então você tem que chamar um binário ( bash ), preferencialmente pelo seu caminho de abolição.

    
por 29.05.2015 / 12:08