Способы запуска Python-скрипта в фоновом режиме на Ubuntu VPS и сохранения логов - PullRequest
0 голосов
/ 30 октября 2019

Итак, у меня есть скрипт на python, который время от времени выводит некоторые данные в терминал. Я пытаюсь запустить на Ubuntu VPS даже после того, как я закрываю соединение SSH и сохраняю где-нибудь журналы.

Я сохраняю журналы, используя:

python3 my_script.py >>file.txt

, и все работает отлично,однако, когда я пытаюсь запустить этот процесс, используя

nohup python3 my_script.py >>file.txt &

, чтобы он работал в фоновом режиме, и после закрытия соединения ssh, кажется, сохраняется только первый журнал, выведенный из my_script.py. Я также попытался запустить это в crontab , но результат аналогичный - сохраняется только первый журнал.

Любые советы? Что я делаю не так?

1 Ответ

1 голос
/ 31 октября 2019

Я не мог понять, что вы подразумеваете под "первым бревном". Может быть, первая строка журналов?

Для запуска чего-либо в фоновом режиме, когда SSH-соединение закрыто, я предпочитаю Linux screen, инструмент для имитации терминала, который поможет вам выполнить вашу команду в подпроцессе. С его помощью вы можете в любое время просматривать выходные данные на переднем плане или оставить процесс запущенным в фоновом режиме.

Использование (короткое)

screen не включено в большинство Linuxраспределения. Установите его (Ubuntu):

$ sudo apt-get install screen

Запустите ваш скрипт на переднем плане:

$ screen python3 my_script.py

Вы увидите, что он работает. Теперь отсоединитесь от этого экрана: нажмите клавиши Ctrl-A, а затем Ctrl-D. Вы вернетесь к своей оболочке, где выполните предыдущую команду screen. Если вам нужно вернуться в рабочий контекст, используйте команду screen -r.

Этот инструмент также поддерживает несколько параллельных процессов.

Что-то странное

Я пробовалперенаправить stdout или stderr в файл с символом > или >>. Это оказалось неудачей. Я не эксперт в этом, и, возможно, вам нужно увидеть его страницу руководства. Тем не менее, я обычно пишу в файл в скриптах Python, с некоторыми важными строками вывода на консоли.

...