Терминал Linux #7.2 - crontab: как запускать Python-скрипт по расписанию

preview_player
Показать описание
Мои курсы:
Boosty:

Patreon:

Как выполнять Python-скрипт по расписанию с помощью crontab?
Пишем парсер сайта Банка России (Центрального банка), который берет данные о курсе доллара, а затем отправляет нам (пользователем) системное сообщение.
Назначаем этот скрипт на исполнение по расписанию с помощью crontab.

Дико удобно :)

*** ИСХОДНЫЙ КОД ***
Основных проектов доступен в Patreon:
***

------

🔷 Для донатов. Всегда очень признателен за это:

------

Это вторая часть. Посвящена именно назначению выполнения скрипта crontab'у. Ну и про парсер немножко есть.

Установка библиотек:
sudo pip3 install requests beautifulsoup4 lxml

Команды:
crontab -l - список имеющихся заданий
crontab -e - редактирование таблицы заданий
crontab -r - удаление всех имеющихся заданий

Алгоритм действий:
1. Написать скрипт
2. Прописать в нем первой строкой shebang: #!/usr/bin/python3
3. Дать скрипту права на исполнение:
4. Прописать в crontab путь до скрипта и вызвать на исполнение скрипт.
Вариантов может быть несколько, я привожу один из них.
5. Экспорт переменной DISPLAY связан с особенностями окружения crontab - оно отличается от общесистемного профиля.
Для тестов можно использовать то окружение, которое имеет crontab:
env -i /bin/bash --noprofile --norc
6. ...
7. PROFIT

Связанные видео:

-----

Все видео серии:

Терминал Linux #1 - навигация по файловой системе

Терминал Linux #2 - Операции с файлами и папками

Терминал Linux #3 - Команда Grep: поиск по файлам и папкам

Терминал Linux #4 - Aliases: как упростить работу в терминале

Терминал Linux #5 - Как установить MySQL на Ubuntu/Mint

Терминал Linux #6 - Как установить PostgreSQL на Ubuntu/Mint

Терминал Linux #7.1 - crontab: запуск задач по расписанию

Терминал Linux #7.2 - crontab: как запускать Python-скрипт по расписанию
Рекомендации по теме
Комментарии
Автор

Единственное что, эта стрелочка может быть и вниз, тогда сплит не сработает, но это так, к словцу.

nickolayfetlistov
Автор

Спасибо! Как всегда всё интересно и доходчиво разъяснено.

anton-pavlov
Автор

Спасибон.Только не бросай канал, очень помогают твои скринКасты.

igorkulibaba
Автор

Ваше видео помогло решить задачу. Спасибо!

fpvvqtc
Автор

Спасибо большое, не знал о Display, теперь всё заработало

young_it
Автор

смотрю в марте 2022, плачу над курсом

Clamator
Автор

Спасибо! Жаль сразу не увидел это видео, не знал про права..

nordost
Автор

Спасибо. Сам недавно долго мучался с окружением cron при запуске скрипта python. Даже если запускать скрипт по абсолютным путям, то скрипт не отрабатывал из-за того, что при импорте своих модулей и работе с файлами, лежащими в каталоге скрипта, оный их не мог найти. Заработала связка команд * * * * * * cd /path/to/script && scriptname.py

aleksbotler
Автор

Кто бы мог подумать но из этого видоса я узнал как подключившись через ssh запустить что-то на экране пациента)

jsnpygf
Автор

Олег, в чем принципиальная разница subprocess.check_output() и os.system() ? Помимо того, что первый возвращает stdin

yodapunishes
Автор

Как запускать скрипт через cron, если стоит виртуальное окружение venv?

dnykhxz
Автор

Доброй ночи Олег! Спасибо за видео: классно объясняешь. Такой вопрос: при установке любого модуля через pip он постоянно выводит строки с рекомендацией по его апдейту. Оно нужно? Что то нужнее, интереснее удобнее будет после обновления - или наоборот может поломать что то из работающих уже вещей? Есть смысл обновить?

froiqps
Автор

Интересное применение. Пытаюсь запустить notify-send на VPS Ubuntu 20 и получаю Cannot autolaunch D-Bus without X11 $DISPLAY. Что за фигня. Дисплей нужен?

Storks
Автор

два видео глянул, как работать с crontab не понял.

arbiatagaev
Автор

Поделитесь ссылкой или опишите как запускать файлы *.py в Atom Runner в правой части, спасибо!

woodenstorm
Автор

Ваш скрипт не всегда будет работать. Стрелочка вверх не всегда будет стрелочкой вверх. Лучше было бы использовать тот самый пробел, который не пробел. Тогда и направление курса сразу видели бы в уведомлении.

ruwebstyle
Автор

как я понял стрелка вниз означает падение курса, т.е. при повышении курса мы не сможем просплитить. сделал вот так - result=t[-8:] есть ли в этом ошибка?

hanckhanck
Автор

А у меня после использования сплит ошибка и не могу понять что не так UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

Pumba
welcome to shbcf.ru