Ubuntu cron запуск python скрипта

How to Run Python Script at Startup in Ubuntu

The reputation of Python as a programming language speaks for itself. This programming language is attributed as general-purpose, high level, and interpreted.

Most Linux users are in love with the Python programming language due to its code readability which makes it easy to follow and master even for a beginner in the programming world.

Some advantages of Python Programming language are listed below:

  • Open-source and community development support.
  • Rich in third-party modules.
  • User-friendly data structures.
  • Dynamically typed programming language.
  • Interpreted language.
  • Highly efficient.
  • Portable and interactive.
  • Extensive libraries support.

The above-mentioned features make Python ideal for projects related to software development (desktop, web, gaming, scientific, image processing, and graphic design applications), operating systems, database access, prototyping, and language development.

This article will address the use of Python as a scripting language in an operating system environment (Ubuntu).

Prerequisites

Ensure you meet the following requirements:

  • You are a sudoer/root user on a Linux operating system distribution.
  • You can comfortably interact with the Linux command-line environment, interpret, and execute its associated commands.
  • You have the latest version of Python installed on Ubuntu.
Читайте также:  Error message code in html

Confirm that you have Python installed by running the command:

$ python3 --version Python 3.8.10

Running a Python Script at Startup in Ubuntu

The following steps will help us achieve the main objective of this article.

Step 1: Create Your Python Script

Create your Python script if it does not already exist. For this article guide purpose, we will create and use the following Python script.

Add the following Python script.

from os.path import expanduser import datetime file = open(expanduser("~") + '/Desktop/i_was_created.txt', 'w') file.write("This LinuxShellTips Tutorial Actually worked!\n" + str(datetime.datetime.now())) file.close()

Upon rebooting our Ubuntu system, the above Python script should be able to create a file called i_was_created.txt on the Ubuntu Desktop (Desktop). Inside this file, we should find the text This LinuxShellTips Tutorial Actually worked! together with the date and time of its creation.

Next, move the Python Script to a directory where it can be executed with root user privileges upon system restart. One such viable directory, in this case, is /bin.

Let us move the script using the mv command.

$ sudo mv python_test_code.py /bin

Now create a cron job scheduler that will periodically handle the execution of the above-created Python script (In this case during system startup).

At the bottom of this file, add the line:

@reboot python3 /bin/python_test_code.py &

Save and close the file and then confirm the creation of the cron job schedule:

Check Cron Job in Linux

The @reboot portion of the above line tells the cron job scheduler to execute the script at system startup. The & parameter informs the cron job scheduler to execute the Python script in the background so as not to interfere with normal system startup.

We are now ready to reboot our system

Let us check if our file was created:

$ cat ~/Desktop/i_was_created.txt && echo ''

Run Python Script at Ubuntu Startup

The existence of the above file confirms the Python script was successfully executed at the Ubuntu system startup.

Источник

Как запустить скрипты python через cron на Linux

Admin 17.12.2020 , обновлено: 22.12.2020 Linux

Описание процесса запуска скриптов python на сервере Linux.

Альтернативы cron на python — timer или периодические задачи (celery).

Подготовка сервера

Сервер должен быть сконфигурирован для работы с python. Повторю основное из статьи по ссылке.

На сервере должны быть установлены пакеты для python:

Установлен пакет python3-venv:

Положить файлы в требуемую директорию и создать там виртуальную среду:

Подготовка файла

В верху файла python добавить строку ведущую к виртуальному окружению python:

Если нужны зависимости (модули) к файлу их можно отдельно установить через файл requirements.txt.

Добавление в cron

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

Будет предложено какой редактор использовать для просмотра кронов. Пропустите это сначала и посмотрите где находится nano (если конечно предпочтение отдается ему):

А затем указывая его путь установим редактор по умолчанию:

Строка состоит из: время запуска / скрипт запуска / лог запуска (если ошибок не будет, он будет пустым, если специально туда ничего не выводить).

Возможные ошибки

Не видится путь к модулям. Используйте эту статью.

Читайте также

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Источник

Код на python, сервер и Cron. Запускаем код на сервере по времени

У меня была задача «Собирать статистику постов в vk каждый час». Я не являюсь разработчиком или DevOps специалистом. Поэтому мой способ решения задачи сложился из поисковых запросов, личного опыта, советов друзей и коллег.

Решение я разбил на 2 части:

В этой статье мы рассмотрим реализацию 2-го пункта. Если у вас нет 2 пункта подойдет любой другой код, которые требуется запускать по расписанию.

На схеме это будет выглядеть следующим образом.

Код на python публикуем на сервер через github, устанавливаем docker. В crontab задаем интервал для запуска docker контейнера

Подготавливаем данные для Docker

Про Docker написано очень много статей, поэтому я не буду писать еще раз, что это и для чего используется. В контексте данной статьи Docker будет частью нашего решения. В следующем разделе будет ссылка на материал по теме Docker, который помог мне.

* noted-point файл с расширением json, который используется в коде на python

  1. Создаем файл requrements.txt
  2. Настраиваем Dockerfile
  3. Настраиваем переменное окружение в коде python
  4. Оставляем словарь, который использует google sheet api*

requrements.txt

В папке с вашим кодом создаем файл с точно таким же именем requrements.txt Этим файлом мы говорим Docker, какие библиотеки нужно дополнительно установить и какой версии.

Как понять, что туда написать?

Обязательно вносим в файл библиотеки, которые вы устанавливали дополнительно. В моем случае все библиотеки, которые использованы в коде в самом начале.

import os import requests from pandas import json_normalize import pandas as pd from datetime import datetime from datetime import * import httplib2 from oauth2client.service_account import ServiceAccountCredentials import apiclient.discovery

В IDE в консоле пишем pip freeze.
Видим список всех установленных пакетов в вашем виртуальном окружение и их версии

Пример вывода списка библиотек с и их версии

Выбираем библиотеки, которые мы с вами используем в коде и переносим в requrements.txt

На выходе это будет выглядеть так:

Наполнение файла requrements.txt

Dockerfile

заполненная структура докер файла

Создаем файл Dockerfile, без расширения. Открываем его и заносим данные

FROM python: «ваша версия python». Узнать ее можно набрав в терминале: python –V

Подробно останавливаться на всем не буду. Выше собранный requrements.txt будет использован в RUN.

ENV это переменное окружение, которые будут храниться внутри Docker. ENV TZ Europe/Moscow – установление московского времени.

Все остальные переменные необходимы для корректной работы кода. (см. статью https://habr.com/ru/post/720862/)

Конечно можно их и не прописывать и все оставить в коде. В моем случае, я решил, что оставлю все переменные в одном месте просто для своего удобства.

CMD указываем язык программирования и названия вашего файла с кодом в моем случае это vk_stat.py

Настраиваем переменное окружение в коде python

Мы удаляем значение переменных из кода, так как они у нас уже в Dockerfile.
Прописываем команду, которая будет забирать переменные окружения.

TOKEN_USER = os.getenv('TOKEN_USER') VERSION = os.getenv('VERSION') DOMAIN = os.getenv('DOMAIN')

Создаем сервер, публикуем код на GitHub

Я бы посоветовал прежде, чем перейти к этому шагу скачать отдельно docker desktop и провести тестирование на вашей локальной машине.

В этом видео вы найдете все что нужно по установки docker и кратко для чего он применяется. Мне данное видео очень помогло. https://www.youtube.com/watch?v=QF4ZF857m44

Для тех кто c Docker знаком предлагаю просмотреть фрагмент видео (ссылка выше) с 1:05:23 по 1:10:17

Добавлю лишь, если вы не хотите прописывать переменные внутри сервера, то сделайте закрытый репозиторий на GitHub!

Здесь не вижу смысла перечислять все шаги, если вы повторите за автором видео.

90% работы вами уже сделано. По итогам у вас:

— Создан сервер с опубликованном кодом через github + установленный docker

Отладка Cron

Далее через командную строку заходим на наш сервер.

Мне понравилась статья про cron здесь https://losst.pro/nastrojka-cron, но далее кратко напишу по сути. Набираем «crontab –e» в командной строке.

В самом конце набираем интервал для запуска контейнер. В моем случае каждый час. В помощь хороший сайт, который позволит сразу настроить интервал https://crontab.guru

Далее пишем команду Docker run –rm «имя вашего образа». Флажок –rm удаляет контейнер после его отработки. Не забываем сохранить наши изменения.

Cron перед сохранением. test - имя моего образа

Проверить, не падает ли контейнер при запуске можно в логах. Введите команду grep CRON /var/log/syslog

Заключение

Данное решение позволяет выполнить поставленную задачу. Конечно его можно улучшить. Например, добавить логирование, написать класс и завернуть все в функции что позволит в будущем расширять функционал. Возможно радикально пересмотреть в целом предлагаемое мной решение.

Сервер обходиться в 200 рублей за месяц аренды. Работать код будет 4-6 месяцев. Если у кого-то есть решение, как можно сделать тоже самое без использования сервера, будет интересно почитать.

Источник

How To Schedule Python Scripts As Cron Jobs With Crontab (Mac/Linux)

In this tutorial, we learn about cron jobs and how to schedule commands and Python scripts in the terminal via crontab (for Linux and Mac). This allows us to run commands on a repetitive schedule. We specifically look into running Python scripts as cron jobs. There are a couple of pitfalls where we have to be careful. We also learn how to schedule jobs with a virtual environment.

The code is also available on GitHub.

Crontab¶

We can schedule jobs with the crontab command. A crontab file is a simple text file containing a list of commands meant to be run at specified times. It is edited using the crontab command. The commands in the crontab file are checked by the cron daemon, which executes them in the system background.

List all scheduled cron jobs with:

Edit the file by using the command:

Then use the following syntax to schedule a job

For example to run a python script use:

The syntax¶

To check the syntax I recommend to visit the free website crontab.guru.

The syntax is this: ‘minute hour day-of-month month day-of-week’

The 5 items are used to specify minute, hour, day in the month, month, and day in the week (in this order).

Allowed values are:

  • 0-59 for minute
  • 0-23 for hour
  • 1-31 for day-of-month
  • 1-12 for month
  • 0-6 for day-of-week (0 = Sunday)

The following characters can be used for more complex timing:

Some examples:

  • * * * * * : At every minute (every minute, every hour, every day, every month, every weekday)
  • 0 10 * * * : At 10:00 AM each day
  • 0 10 * * 0 : At 10:00 AM on each Monday
  • 0 0 1,15 * * At 00:00 on 1st and 15th each month
  • 0 0 * * 1-3 : At 00:00 from Monday through Wednesday
  • 0 0 1/2 * * : At 00:00 on every 2nd day from 1 through 31

Pitfalls when running Python scripts¶

\1. Use the full path to your file, e.g.:

\2. When logging into files, specify the full path for the filename in the Python file. Otherwise the file just ends up in your home directory.

\3. When a virtual environment is used, specify the full path to the python executable, e.g.:

FREE VS Code / PyCharm Extensions I Use

✅ Write cleaner code with Sourcery, instant refactoring suggestions: Link*

PySaaS: The Pure Python SaaS Starter Kit

🚀 Build a software business faster with pure Python: Link*

* These are affiliate link. By clicking on it you will not have any additional costs. Instead, you will support my project. Thank you! 🙏

Источник

Оцените статью