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

  • grep для текста, который может или не может присутствовать
  • Как создать скрипт bash до тех пор, пока не будет установлен pendrive?
  • используя sudo -u <имя> для запуска команд внутри сценариев оболочки
  • как конкатенировать следующую строку, когда условие истинно awk
  • Solaris: PKG - скрипт для проверки всех пакетов, за исключением нескольких
  • Проблема с сценарием Linux Bash с подстановочным знаком
  • Cron: Почему мои скрипты cron не работают, хотя cron работает
  • Гибридный код в сценариях оболочки. Обмен переменными
  • 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 - лучшая ОС в мире.