Я создал программу, которая требует последовательности инструкций командной строки для сбора новой информации и обновления баз данных.
Есть ли способ автоматизировать этот процесс, чтобы мне не приходилось вводить все это в терминал каждый раз, когда я сажусь? Может быть, сделать так, чтобы первые 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 для блокировки/разблокировки игрового каталога. Для этого выполните следующие действия.
Убедитесь, что cron-daemon установлен
sudo apt-get install cron
Настройка 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 каждый день.