LINUX.ORG.RU

Как правильно написать журналирование через cron

 , , ,


0

2

Я пишу журналирование создания архива, в котором выводятся ошибки тоже, в crontab я написал:

*/3 * * * * date >> /var/log/create_tar/file.log && echo 'tar for folder 2 in process' >> /var/log/create_tar/file.log; tar cf /home/boguskladik/create_tar/2.tar /home/boguskladik/create_tar/2 && date >> /var/log/create_tar/file.log && && echo 'tar for folder 2 create' >> /var/log/create_tar/file.log 2>&1

И в логах пишется, если в этом каталоге нету папки 2, только tar for folder 2 in process, как можно выписать в log ошибку tar?

как можно выписать в log ошибку tar?

Надо из tar'а тоже редирект сделать, ты его пропустил. И не только >> но и 2>> (либо 2>&1).

А вообще - сделай это всё скриптом и укажи в кронтабе его. Такие простыни там ни к чему.

firkax ★★★ ()
Ответ на: комментарий от firkax

А как тогда правильно написать? Я сейчас протестировал и заметил странную вещь, у меня пишется только ошибка и первого эха нет

* * * * * echo 'ccccccccc' >> /home/boguskladik/create_tar/log/file.log && tar cf /home/boguskladik/create_tar/1.tar /home/boguskladik/create_tar/1 2>/home/boguskladik/create_tar/log/file.log && echo 'bra' >> /home/boguskladik/create_tar/log/file.log
Bogus_Kladik ()
Ответ на: комментарий от Bogus_Kladik

Второй редирект 2> от тара затирает файл, чтобы не затирал надо 2>>.

А как тогда правильно написать?

Для начала перенеси всю команду в скрипт, а в кронтабе замени её на вызов скрипта. Потом замени все точки с запятыми на перенсоы строк. В начало скрипта допиши #!/bin/sh, и сделай ему chmod +x.

firkax ★★★ ()
Ответ на: комментарий от firkax

Я написал bash и он работал в консоли, но когда я его написал в crontab то он почему-то не работает( Вот bash:

#!/bin/bash
if [ "$#" -lt 1 ]; then
    echo "Недостаточно аргументов"
    exit 1
fi
echo '['$(date)'] tar for folder 2 in process'
tar cf $1.tar $1 && echo '['$(date)'] tar for folder 2 create'

Вот crontab

* * * * * ./home/boguskladik/bash_scripts/bb.sh /home/boguskladik/create_tar/1 >> /var/log/create_tar/file.log 2>>&1
Bogus_Kladik ()
Последнее исправление: Bogus_Kladik (всего исправлений: 1)
Ответ на: комментарий от Bogus_Kladik

Зачем точка перед /home?

И надо не 2>>&1 а 2>&1.

firkax ★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.