2017-02-19 1 views
0

У меня есть следующий Баш скрипт:выхода не собирается подавать, когда бежал как хроны

clean-tmp.sh

#!/bin/bash 
tmpreaper 1h /tmp --test > ./tmpreaper.log 

Когда я запускаю его в терминале с помощью ./clean-tmp.sh, его пишет в файл ./tmpreaper.log.

я добавил сценарий к списку хрон рабочих мест с помощью crontab -e:

*/5 * * * * cd /home/cron-jobs && ./clean-tmp.sh 

Затем я проверил журналы CRON и эта запись там каждые 5 минут:

Feb 19 00:45:01 ip-172-31-23-184 CRON[1475]: (ubuntu) CMD (cd /home/cron-jobs && ./clean-tmp.sh) 

Но это уже не написав до ./tmpreaper.log.

Что я делаю неправильно?

+0

Вы уверены, что 'cd' преуспевает? Это место, где 'exec 2 >>/tmp/err.log; set -x; cd/home/cron-jobs &&./clean-tmp.sh' были бы полезны (или даже 'bash -x./clean-tmp.sh'). –

+0

Запись в файл с использованием относительного пути не является отличной практикой программирования. В общем, неплохо, чтобы скрипт предположил, что его текущий рабочий каталог правильно установлен. Вы можете взглянуть на это сообщение: http://stackoverflow.com/questions/41755437/managing-log-files-created-by-cron-jobs – codeforester

+1

Кстати, обычной причиной такого рода проблем является 'tmpreaper 'не в PATH cron. Например, если он находится в '/ usr/local/bin', это не так по умолчанию. –

ответ

0

Просто указать абсолютный путь к файлу, как tmpreaper 1h /tmp --test > /var/log/tmpreaper.log

+0

Если 'cd' преуспел, мы с уверенностью знаем текущий рабочий каталог. Если в другом месте нет другого сценария под названием 'clean-tmp.sh', тогда' .' не может быть чем-то другим, кроме '/ home/cron-jobs', когда'./Clean-tmp.sh' успешно вызывается. –

+0

... и если это * не * успешно вызвано, то это ничего не исправить. –

0

@Kacy: Немного трудно сказать без бревен хрон, вы могли бы посмотреть на CRON журналы (/ уаг/Журнал/хрон и т.д.).

0,5,10,15,20,25,30,35,40,45,50,55 * * * * cd /home/cron-jobs; ./clean-tmp.sh 

Возможно, некоторые системы не позволят использовать период времени так, как вы пробовали, попробуйте один раз выше, и сообщите нам об этом.

+1

Если '*/5' недействительны, то' crontab -e' отвергнет редактирование. Кроме того, вопрос дает понять, что он регистрируется как вызываемый каждые 5 минут. –

+0

@CharlesDuffy: Спасибо за ваш ответ, я не говорю, что это неверно, я видел системы, где он позволяет сохранить его с помощью crontab -e, но он не работает, поэтому я предложил, чтобы пользователь мог попробовать один раз. – RavinderSingh13

+1

Как указано в вопросе OP, их системные логики говорят, что cron фактически запускает команду каждые 5 минут. –

Смежные вопросы