Um arquivo de shell contendo contagem, mas não mostrando quando tento executar a partir do crontab

1

Eu sou novo na escrita do script shell eu escrevo um script como este

#!/bin/bash
PID=$(ps -ef | grep "sh gps.sh" | grep -v grep | awk '{print $2}')
if [ -z $PID ]
then
    cd /opt/etrans/cronjobs
    cnt=$(echo "select 'count '||count(*) from schema.table where c_is_processed ='N'" | psql | grep count |awk '{print $2}')
    echo "Out side of if count is $cnt" | cat >> /opt/cronlog/unprocess_data_process.log # for log writing
    if [ $cnt -ge 5000 ]
            then
            echo "Inside manual gps" | cat >> /opt/cronlog/unprocess_data_process.log # for log writing
            sh manual_gps.sh
        else
        echo "Inside gps" | cat >> /opt/cronlog/unprocess_data_process.log # for log writing
                sh gps.sh
        fi
else
 echo "gps Process is Running with PID=$PID"
fi
exit

quando eu executo o arquivo .sh manualmente, ele executa o arquivo e posso ver todas as contagens no meu arquivo de log, mas quando eu o executo no crontab ele não está imprimindo as contagens.

    
por smn_onrocks 16.01.2014 / 09:30

1 resposta

0

Suponho que o motivo seja seu ambiente cron . Talvez não saiba onde o comando psql é.

Para investigar o problema, tente adicionar outro script ao seu cron , com este comando:

#/bin/bash

which psql >> /tmp/investigation

Adicione este script a cron para que seja executado assim que possível. Eu acredito em /tmp/investigation , você verá que o shell não pode encontrar o comando psql . Para fornecer shell com psql , você precisa adicioná-lo à variável PATH exatamente antes da execução do comando.

Leia também esta pergunta do wiki

    
por c0rp 16.01.2014 / 09:49