Cron не работает со сценарием оболочки

В процессе обучения / понимания Linux (сложно, но наслаждаясь этим). Я написал очень короткий сценарий оболочки, который использует wget, чтобы вытащить файл index.html с веб-сайта.

#!/bin/bash #Script to wget website mywebsite and put it in /home/pi/bin index=$(wget www.mywebsite.com) 

И это работает, когда я ввожу команду wget_test в командную строку. Он выводит .html-файл в / home / pi / bin.

Я начал пытаться сделать это через cron, чтобы я мог сделать это в определенное время. Я ввел следующее, используя crontab -e

 23 13 * * * /home/pi/bin/wget_test 

В этом примере я хотел, чтобы сценарий работал в 13.23 и выводил файл .html в / home / pi / bin, но ничего не происходит.

2 Solutions collect form web for “Cron не работает со сценарием оболочки”

Эта строка index=$(wget www.mywebsite.com) установит переменную $index ничем. Это связано с тем, что (по умолчанию) wget ничего не записывает в stdout, поэтому в переменную нечего помещать.

Что делает wget – это записать файл в текущий каталог. Задачи Cron запускаются из вашего каталога $HOME , поэтому, если вы хотите записать файл в каталог $HOME/bin вам нужно сделать одну из двух вещей

  1. Напишите wget -O bin/index.html www.mywebsite.com
  2. Напишите cd bin; wget www.mywebsite.com cd bin; wget www.mywebsite.com

Кстати, в каталоге ~/bin обычно хранятся личные скрипты и программы, поэтому лучше подумать о другом месте для записи файла, регулярно получаемого с веб-сайта.

Убедитесь, что ваш скрипт bash имеет права на выполнение и убедитесь, что cronjob установлен на нужном пользователе.

Я думаю, что это происходит потому, что команда в вашем скрипте просто должна быть:

 wget www.mywebsite.com/index.html 
  • Как запустить команду, как если бы она вызывается из cron
  • Как начать работу cron без перезагрузки?
  • Cron, crontab -e читает неверный файл
  • Запускайте задание cron каждую минуту, имея в виду синтаксис
  • / etc / crontab отредактировано путем копирования и вставки, как вернуться назад?
  • время cronjob 13 * * * *
  • Скрипт запускается вручную, но не из cron
  • Как перечислить фактические cronjobs?
  • почему не 0 0 * * 1 root hostname >> /tmp/hostname.txt работать как crontab?
  • Может grep | crontab уничтожить все рабочие места?
  • Как распечатать следующие задачи crontab для выполнения?
  • Linux и Unix - лучшая ОС в мире.