2015-04-21 2 views
1

У меня есть сценарий оболочки, который я написал, который удаляет самый старый файл журнала в каталоге, когда точка монтирования достигает 90% емкости. Когда я запускаю скрипт вручную, он работает нормально, но когда я пытаюсь использовать crontab для запуска, он не может выполнять действительную команду rm, но он выполняет все остальное в скрипте. См. Мой crontab и скрипт ниже.Crontab не может выполнить команду в скрипте

0 * * * * /acsmgmt/iselogs/iselogcleanup.sh 

#!/bin/bash 
df -H | grep /acsmgmt | awk '{ print $4 " " $5 }' | while read output; 
do 
    #!echo $output 
    usep=$(echo $output | awk '{ print $1 }' | cut -d '%' -f1) 
    #!echo $usep 

    if [ $usep -ge 90 ]; then 
      echo $(date) "Logs cleaned up" >> /tmp/isecleanup.log 
      rm -v `ls /acsmgmt/iselogs -rt | grep "iselog-" | head -1` >> /tmp/isecleanup.log 
    else 
      echo $(date) "No logs to clean up" >> /tmp/isecleanup.log 
    fi 
done 
+1

Является ли сценарий причиной ошибок при работе под cron? Вы можете перенаправить stdout/stderr для скрипта в файл, используя что-то вроде '0 * * * * * /acsmgmt/iselogs/iselogcleanup.sh>/tmp/errors 2> & 1', а затем посмотрите на этот файл после скрипта пробеги. – larsks

+0

Просто попробовал это. В файле ошибок не отображается вывод. Cron может выполнять все в скрипте, кроме этого выражения rm -v 'ls/acsmgmt/iselogs -rt | grep "iselog-" | head -1' >> /tmp/isecleanup.log. Все мои эхо отображаются вверх – jedatt01

+0

Возможно, попробуйте 'iselog = $ (ls/acsmgmt/iselogs -rt | grep" iselog- "| head -1)' then do 'rm -v $ iselog >>/tmp/isecleanup.log' –

ответ

1

Таким образом, ответ на самом деле, как я подозревал, всегда убедитесь, что вы указали правильную и полную PATH переменную в любом сценарии, созванном cron.

(Я продолжаю делать ту же самую ошибку, даже после нескольких лет написания cron-скриптов - некоторые версии cron позволяют вам указать PATH по умолчанию (и другие переменные среды) для всех ваших скриптов, и это может помочь, но он также нуждается в тщательном обслуживании.)