Сценарий работает вручную, но не в 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 неправильно выполняет вычисления. Любая помощь?

  • Выполнение задания Cron каждые 5 секунд
  • Гибридный код в сценариях оболочки. Обмен переменными
  • Почему этот скрипт рыбы не запускается из пусковой установки?
  • печать серии символов
  • Удалять файлы с одинаковым именем в конце файла
  • awk хотят суммировать по часам и переменные
  • Запустите несколько экранов и прикрепите их для разделения изображения
  • Напишите удаленный управляющий скрипт
  • 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 - лучшая ОС в мире.