Как написать повторяющийся скрипт bash

Как написать повторяющийся скрипт bash

Я создал программу, которая требует последовательности инструкций командной строки для сбора новой информации и обновления баз данных.

Есть ли способ автоматизировать этот процесс, чтобы мне не приходилось вводить все это в терминал каждый раз, когда я сажусь? Может быть, сделать так, чтобы первые 3 шага запускались каждый час, а шаг 4 запускался в 2 часа ночи, так как его выполнение может занять много времени.

Шаг 1:В терминале:

...Documents/dota2/dotaapi2/ python match_scraper.py 

Шаг 2:В терминале

 psql dota2apidb
 update games set online=1 where online is null;

Шаг 3:В терминале:

...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota

Шаг 4:В терминале: (выполнить только один раз в 2 часа ночи)

...Documents/dota2/dotaapi2/ python gosu_merge.py

...Documents/dota2/dotaapi2/ python unticketed.py

решение1

Одним из решений может быть настройка cronjobs для блокировки/разблокировки игрового каталога. Для этого выполните следующие действия.

  1. Убедитесь, что cron-daemon установлен

    sudo apt-get install cron
    
  2. Настройка cronjob для запуска от имени root

Начните редактирование cronjob, выполнив следующую команду:

sudo crontab -e

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

00 */1 * * * ...Documents/dota2/dotaapi2/ python match_scraper.py
01 */1 * * * psql dota2apidb
02 */1 * * * update games set online=1 where online is null;
03 */1 * * * ...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
04 02 * * * ...Documents/dota2/dotaapi2/ python gosu_merge.py
05 02 * * * ...Documents/dota2/dotaapi2/ python unticketed.py

(Просто чтобы было ясно, что вам нужно использовать правильные команды и пути, возможно, поместив часть из этого в подготовленные скрипты bash, чтобы вы могли сократить количество запущенных cron)

решение2

поместите шаги 1,2,3 в script1.sh поместите шаг 4 в script2.sh

Затем настройтехрондля соответствующего пользователя, чтобы выполнить скрипты согласно вашему расписанию:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command

    01 * * * * /usr/bin/directory/script1.sh
    30 2 * * * /usr/bin/directory/script2.sh

script1.sh будет выполняться в 01 минуту каждого часа каждого дня, а script2.sh будет запускаться в 30-ю минуту 0200 каждый день.

Связанный контент