Пишем своего робота на Python. Урок 13
Учимся запускать скрипт на Python в нужное нам время автоматически с помощью bash и crontab.
![Пишем своего робота на Python. Урок 13](https://storage.googleapis.com/static.istories.media/uploaded/images/8873458a5d904f52bc99ba2ae7738ef6-1920x960px_1x.png)
Продолжаем писать робота-анализатора госконтрактов. Сегодня мы разберемся, как научить скрипт запускаться самостоятельно, без вашего участия — вы будете указывать только нужное время.
Нам понадобятся bash и crontab, начнем с первого. У bash есть определенный язык, который мы можем использовать в терминале. Сперва нужно создать файл, с которым bash сможет взаимодействовать, то есть, запускать его и исполнять его команды.
Откроем проект и создадим новый файл runscript.sh. Он всегда должен начинаться со строчки #!/bin/bash.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/ddba04bf3b0e461891e7ac1f058f7748-1200xautopx_1x.png)
После этого можем прописать команду к исполнению, она будет работать, как и любая из предыдущих наших команд в терминале: напишем python3 и название файла, который нужно запустить. После этого в терминале пишем команду bash и название нашего скрипта.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/969e89dafc324709899d531ff0dcfa0e-1200xautopx_1x.png)
![Так как скрипт лежит в корневой директории, путь мы не прописываем, только название](https://storage.googleapis.com/static.istories.media/uploaded/images/5ad9084d9dce46dea57ca5b30cfbacb9-1200xautopx_1x.png)
Когда команда выполнилась, на вашу почту должно прийти письмо с госконтрактами. Еще нужно активировать среду, в которой мы работали, когда писали наш проект. Добавим в скрипт еще одну строчку с командой source и ссылкой — ее можно увидеть, когда вы запускаете виртуальное окружение.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/7bb997ac1b4c4d219d59c777a3f7d066-1200xautopx_1x.png)
То, что мы делали сейчас — это все-таки ручная работа. Разберемся, как ее автоматизировать — для этого пригодится crontab. Возвращаемся в терминал и с помощью команды crontab -l проверяем, есть ли какие-то уже запущенные кронтабы. В нашем случае их быть не должно.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/7d7a8b2406ed44638f9c4ea07412b778-1200xautopx_1x.png)
Чтобы создать кронтаб, вводим crontab -e и попадаем в программу vi, где можем его написать. В этом нам поможет сайт crontab guru. С помощью звездочек и цифр мы можем указать, как часто хотим запускать выполнение скрипта. Пять звездочек означают, что скрипт будет исполняться каждую минуту.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/36aa058c6f2e4912bfb749dddde89a75-1200xautopx_1x.png)
Если, например, мы укажем в минутах 0, а в часах 21, то код будет выполняться каждый день в 9 вечера.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/90bbd0baa1ce4f4a8ec6df9e1d61000e-1200xautopx_1x.png)
Для примера попробуем запускать скрипт каждую минуту. Чтобы начать писать что-то в vi, нужно сначала нажать букву i. Теперь пропишем параметры для crontab (в нашем случае * * * * *) и в конце добавим bash runscript.sh. Чтобы закончить редактуру файла vi, нажимаем клавишу Esc и пишем :wq.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/34378e6c291841b5a736893a67d1ac77-1200xautopx_1x.png)
Проверим, появился ли он в списке уже известной нам командой crontab -l.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/82b68503b1fc422483787b87ed6c5d8d-1200xautopx_1x.png)
Чтобы следить за рассылками, в терминале используем команду mail. Она покажет, приходили ли вам письма и сколько.
![](https://storage.googleapis.com/static.istories.media/uploaded/images/7bbf25519328445cbd6296355217ed01-1200xautopx_1x.png)
Теперь пора остановить скрипт. Для этого пропишем crontab -r. Перепроверить его можно той же командой crontab -l.
С помощью crontab можно запускать не только скрипты на Python, но и какие-то другие процессы — но для этого компьютер должен быть включен. В следующий раз разберемся, как делать все то же самое, но на удаленном сервере, чтобы работа скрипта не была привязана к вашему компьютеру.
Если у вас появились вопросы, вы можете задать их в нашем Telegram-чате.