Intereting Posts

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, но ничего не происходит.

Эта строка 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