Продолжаем писать робота-анализатора госконтрактов. Сегодня мы разберемся, как научить скрипт запускаться самостоятельно, без вашего участия — вы будете указывать только нужное время.

Съемка и монтаж: Глеб Лиманский

Нам понадобятся bash и crontab, начнем с первого. У bash есть определенный язык, который мы можем использовать в терминале. Сперва нужно создать файл, с которым bash сможет взаимодействовать, то есть, запускать его и исполнять его команды.  

Откроем проект и создадим новый файл runscript.sh. Он всегда должен начинаться со строчки #!/bin/bash

После этого можем прописать команду к исполнению, она будет работать, как и любая из предыдущих наших команд в терминале: напишем python3 и название файла, который нужно запустить. После этого в терминале пишем команду bash и название нашего скрипта.

Так как скрипт лежит в корневой директории, путь мы не прописываем, только название
Так как скрипт лежит в корневой директории, путь мы не прописываем, только название

Когда команда выполнилась, на вашу почту должно прийти письмо с госконтрактами. Еще нужно активировать среду, в которой мы работали, когда писали наш проект. Добавим в скрипт еще одну строчку с командой source и ссылкой — ее можно увидеть, когда вы запускаете виртуальное окружение.

То, что мы делали сейчас — это все-таки ручная работа. Разберемся, как ее автоматизировать — для этого пригодится crontab. Возвращаемся в терминал и с помощью команды crontab -l проверяем, есть ли какие-то уже запущенные кронтабы. В нашем случае их быть не должно.

Чтобы создать кронтаб, вводим crontab -e и попадаем в программу vi, где можем его написать. В этом нам поможет сайт crontab guru. С помощью звездочек и цифр мы можем указать, как часто хотим запускать выполнение скрипта. Пять звездочек означают, что скрипт будет исполняться каждую минуту. 

Если, например, мы укажем в минутах 0, а в часах 21, то код будет выполняться каждый день в 9 вечера.

Для примера попробуем запускать скрипт каждую минуту. Чтобы начать писать что-то в vi, нужно сначала нажать букву i. Теперь пропишем параметры для crontab (в нашем случае * * * * *) и в конце добавим bash runscript.sh. Чтобы закончить редактуру файла vi, нажимаем клавишу Esc и пишем :wq.

Проверим, появился ли он в списке уже известной нам командой crontab -l

Чтобы следить за рассылками, в терминале используем команду mail. Она покажет, приходили ли вам письма и сколько.

Теперь пора остановить скрипт. Для этого пропишем crontab -r. Перепроверить его можно той же командой crontab -l

С помощью crontab можно запускать не только скрипты на Python, но и какие-то другие процессы — но для этого компьютер должен быть включен. В следующий раз разберемся, как делать все то же самое, но на удаленном сервере, чтобы работа скрипта не была привязана к вашему компьютеру. 

Если у вас появились вопросы, вы можете задать их в нашем Telegram-чате.