Сценарий работает вручную, но не в cron – не вычисляет var?

Я создаю сценарий резервного копирования GFFS для школьного задания, но я столкнулся с некоторыми проблемами. Он работает следующим образом:

/etc/backup/backup.sh PERIOD NUMBER 

Я добавил следующие строки в cron:

 # mh dom mon dow command # Backup for fileserver: #daily: 5 times/week 0 23 * * 1-5 /etc/backup/backup.sh daily $(date -d "-1 day" +%w) #weekly: 5 times/month 10 23 * * 7 /etc/backup/backup.sh weekly $((($(date +%-d)-1)/7+1)) #monthly: 12 times/year 20 23 1 * * /etc/backup/backup.sh monthly $(date -d "-1 day" +%m) #yearly: each year 0 3 1 1 * /etc/backup/backup.sh yearly $(date -d "-1 day" +%Y) 

В конце вычислений нужно знать, что предыдущее резервное копирование было отменено. Это работает идеально, когда запускается вручную, но при запуске cron он делает что-то странное. Я говорю о еженедельной резервной записи. расчет должен дать мне номер недели в текущем месяце. я сделал «grep CRON / var / log / syslog» и нашел эту строку:

 Dec 19 14:33:01 BE-SV-04 CRON[5445]: (root) CMD (/etc/backup/backup.sh weekly $((($(date +) 

Кажется, что cron неправильно выполняет вычисления. Любая помощь?

  • Вызовите сценарий Linux с языка сценариев
  • Использование grep / awk / sed для сортировки и объединения двух файлов
  • Как я могу отказаться от оболочки после выхода из команды, которую я начал с помощью сценария tmux?
  • Показывать все файлы из каталога с кошкой одновременно.
  • Cron Bash Script - эхо на текущий терминал вместо / var / spool / mail / root
  • Как сделать svn искать, если есть обновление раз в минуту, и если есть вызов какого-то скрипта?
  • bash: как сохранить состояние при быстрой оценке
  • Unalias в сценарии резервного копирования Mysql
  • 2 Solutions collect form web for “Сценарий работает вручную, но не в cron – не вычисляет var?”

    Я думаю, вам нужно избежать «%» – знаков

    так это:

     0 23 * * 1-5 /etc/backup/backup.sh daily $(date -d "-1 day" +\%w) 

    … должно сработать. Я не знаю, с кем нужно бежать, подумайте + и%, пожалуйста, попробуйте. * Когда я делал это в cron, я использовал синтаксис backgick backgick для выполнения команды, и мне тоже пришлось их escapte: *

     0 1 * * * something >> bla\`date \+\%Y_\%m_\%d\`.log 

    Я не уверен, в какую оболочку входит cronjob, но, похоже, он не может разобрать расчет; вам может потребоваться использовать bc .

    Linux и Unix - лучшая ОС в мире.