Портирование Bash при l oop на Python 2 - PullRequest
0 голосов
/ 17 января 2020

Я стажер, портирующий скрипт Linux Bash на Python 2.6. Этот скрипт в основном использует панель управления intr anet, которая отображает данные о серверах. Он обновляется каждую минуту и ​​работает постоянно, в основном 24 / 7.

Мне нужна помощь в преобразовании строки Bash ниже Python:

(while sleep 30; do custom_cmd > tmp.txt; cp tmp.txt index.html; rm tmp.txt; done) & 

У меня есть путаница в преобразовании '&', которое, как я знаю, превращает l oop в фоновый процесс. while sleep 30 работает бесконечно (до тех пор, пока пользователь активен) и работает каждые 30 секунд (до тех пор неактивно). Я уже портировал custom_cmd (который генерирует html для панели инструментов) на Python 2.6.

Сценарий Bash настроен с использованием "nohup", что, как я считаю, означает, что сценарий будет работать даже после того, как пользователь выходит из машины Linux.

При этом, как я могу преобразовать указанную выше строку Bash в Python, чтобы она выполнялась как фоновый процесс навсегда ? Большое спасибо.

1 Ответ

0 голосов
/ 17 января 2020

Простой скрипт bash может быть написан так:

from subprocess import call, PIPE
from tempfile import SpooledTemporaryFile
from time import sleep

def myfunc():
    while True:
        sleep(30)
        handle = SpooledTemporaryFile()
        if call(['custom_cmd'], stdout=handle) == 0:
            handle.seek(0)
            open('index.html', 'w').write(handle.read())
        handle.close()

Затем вы должны использовать daemonize , чтобы демонизировать функцию.

...