πŸš€ΠšΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт Python Π² Ubuntu ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½: пошаговая инструкцияπŸ”₯

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт Python ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½ Π² Ubuntu, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ systemd. Π’ΠΎΡ‚ шаги:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΡŽΠ½ΠΈΡ‚-Ρ„Π°ΠΉΠ» для вашСго скрипта. НапримСр, создайтС Ρ„Π°ΠΉΠ» /etc/systemd/system/my_script.service.
  2. [Unit]
    Description=My Script
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/python3 /path/to/your/script.py
    WorkingDirectory=/path/to/your/script/directory
    
    [Install]
    WantedBy=multi-user.target

    Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ скрипту ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π² ExecStart ΠΈ WorkingDirectory соотвСтствСнно.

  3. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ».
  4. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ список ΡŽΠ½ΠΈΡ‚ΠΎΠ² systemd, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
  5. sudo systemctl daemon-reload
  6. ЗапуститС скрипт ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
  7. sudo systemctl start my_script

    Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ my_script Π½Π° имя вашСго ΡŽΠ½ΠΈΡ‚-Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .service.

  8. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
  9. sudo systemctl enable my_script

    Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΡˆΠ΅ΠΌΡƒ скрипту Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ автоматичСски ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы.

  10. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваш скрипт Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ статус с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:
  11. sudo systemctl status my_script

НадСюсь, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚! Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вопросы, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт python Π² Ubuntu ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½

Π’ Ubuntu Π΅ΡΡ‚ΡŒ нСсколько способов Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт Π½Π° языкС Python Π² качСствС Π΄Π΅ΠΌΠΎΠ½Π°. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых распространСнных способов - использованиС систСмного сСрвиса (systemd). БистСмный сСрвис позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ процСссом выполнСния скрипта, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ автоматичСски ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ состояниС. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ!

Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ скрипта Python

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ скрипт Π½Π° языкС Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ скрипт с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "my_script.py", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ содСрТимоС скрипта:


import time

def main():
    while True:
        print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, я Π΄Π΅ΠΌΠΎΠ½!")
        time.sleep(1)

if __name__ == "__main__":
    main()

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ скрипт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, я Π΄Π΅ΠΌΠΎΠ½!" ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС скрипта Π½Π° свой собствСнный ΠΊΠΎΠ΄.

Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° сСрвиса для systemd

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» сСрвиса для systemd. Он Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ настройки для запуска скрипта, Π° Ρ‚Π°ΠΊΠΆΠ΅ указания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ systemd Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ процСссом выполнСния скрипта.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» "my_script.service" Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ "/etc/systemd/system/" ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅:


sudo nano /etc/systemd/system/my_script.service

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» сСрвиса:


[Unit]
Description=My Script
After=network.target

[Service]
ExecStart=/usr/bin/python3 /ΠΏΡƒΡ‚ΡŒ/ΠΊ/Ρ„Π°ΠΉΠ»Ρƒ/my_script.py
WorkingDirectory=/ΠΏΡƒΡ‚ΡŒ/ΠΊ/Ρ„Π°ΠΉΠ»Ρƒ/
Restart=always
User=имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

[Install]
WantedBy=multi-user.target

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ "my_script.py" Π² полях "ExecStart" ΠΈ "WorkingDirectory". Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ "имя_ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ" Π½Π° вашС имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ скрипт с ΠΏΡ€Π°Π²Π°ΠΌΠΈ этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π¨Π°Π³ 3: Запуск ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвисом

ПослС создания Ρ„Π°ΠΉΠ»Π° сСрвиса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ наш скрипт ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:


sudo systemctl daemon-reload
sudo systemctl start my_script

Команда "sudo systemctl daemon-reload" обновляСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ systemd, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΡƒΠ·Π½Π°Π» ΠΎ Π½ΠΎΠ²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ сСрвиса.

Команда "sudo systemctl start my_script" запускаСт наш скрипт ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "sudo systemctl stop my_script" для остановки Π΄Π΅ΠΌΠΎΠ½Π° ΠΈ "sudo systemctl restart my_script" для пСрСзапуска Π΄Π΅ΠΌΠΎΠ½Π°.

Π¨Π°Π³ 4: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° состояния сСрвиса

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ состояниС сСрвиса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "sudo systemctl status my_script". Она ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ сСрвиса, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΅Π³ΠΎ статус, врСмя Π΅Π³ΠΎ послСднСго запуска ΠΈ Π»ΠΎΠ³ΠΈ.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ! Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ скрипт Python Π² Ubuntu ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ собствСнными Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ Π² своСй систСмС.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

НаписаниС Π΄Π΅ΠΌΠΎΠ½Π°, Ρ‡Π°ΡΡ‚ΡŒ пСрвая. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ скрипта для Π΄Π΅ΠΌΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Linux. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ скрипта Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ systemd

Π”ΠžΠ‘ΠΠ’Π›Π―Π•Πœ BASH БКРИПВ Π’ ΠΠ’Π’ΠžΠ—ΠΠ“Π Π£Π—ΠšΠ£ SYSTEMD | Π£ΠŸΠ ΠΠ’Π›Π•ΠΠ˜Π• Π”Π•ΠœΠžΠΠΠœΠ˜ LINUX | Π‘ΠžΠ—Π”ΠΠΠ˜Π• UNIT SYSTEMD

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”’ Как Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ число Π½Π° Ρ†ΠΈΡ„Ρ€Ρ‹: ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° Python

🐍 Как ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Python Π² исполняСмый Ρ„Π°ΠΉΠ» exe? πŸ“¦

πŸ” Как ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ класса Python: простой Π³ΠΈΠ΄ ΠΏΠΎ использованию

πŸš€ΠšΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт Python Π² Ubuntu ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½: пошаговая инструкцияπŸ”₯

πŸ”Ž Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π½Π° Python: пошаговоС руководство

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ нСизмСняСмыС строки Π² Python? 🐍

Как Π·Π²Π°Π»ΠΈ ΠŸΠΈΡ‚ΠΎΠ½Π° ΠΈΠ· ΠΌΡƒΠ»ΡŒΡ‚Ρ„ΠΈΠ»ΡŒΠΌΠ° ΠœΠ°ΡƒΠ³Π»ΠΈ 🐍