У меня есть сценарий оболочки, который я написал, который удаляет самый старый файл журнала в каталоге, когда точка монтирования достигает 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
Является ли сценарий причиной ошибок при работе под cron? Вы можете перенаправить stdout/stderr для скрипта в файл, используя что-то вроде '0 * * * * * /acsmgmt/iselogs/iselogcleanup.sh>/tmp/errors 2> & 1', а затем посмотрите на этот файл после скрипта пробеги. – larsks
Просто попробовал это. В файле ошибок не отображается вывод. Cron может выполнять все в скрипте, кроме этого выражения rm -v 'ls/acsmgmt/iselogs -rt | grep "iselog-" | head -1' >> /tmp/isecleanup.log. Все мои эхо отображаются вверх – jedatt01
Возможно, попробуйте 'iselog = $ (ls/acsmgmt/iselogs -rt | grep" iselog- "| head -1)' then do 'rm -v $ iselog >>/tmp/isecleanup.log' –