Проверка занятости сеанса tmux вне самого сеанса

Действительно, лучший подход — использовать --envот Gunicorn, который создает переменную среды в ОС, которую вы можете прочитать и включить данные в свое приложение Python:

В вашем юнит-файле:

ExecStart=/usr/local/bin/gunicorn app:app -b 127.0.0.1:8100 --env GUNICORN_SERVER="127.0.0.1:8100" --pid /run/pysd/pysd.pid --workers=2

В вашем приложении (Flask, например):

import os
from flask import Flask

app = Flask(__name__)

gs = os.getenv('GUNICORN_SERVER')
if gs:
    app.config["SERVER_NAME"] = gs                                              
else:
    app.config["SERVER_NAME"] = "127.0.0.1:8100"

Спасибо за комментарий, JdeBP. Документация действительно содержит много информации.

1
29.09.2020, 19:37
1 ответ

Вы можете использовать ps -x --forest, чтобы определить, есть ли у оболочек в вашем сеансе tmux запущенные дочерние процессы. Если вы хотите сделать это программно, вам, вероятно, следует получить pid вашего tmux, затем перечислить его дочерние оболочки, используя ps --ppid <the tmux pid>, и, наконец, перечислить их дочерние процессы, используя ту же команду. Быстро и грязно:

ps --ppid $(ps -h -opid:1 --ppid $(ps x | awk ' $5 == "tmux" {print $1}') | tr '\n' ',' | sed 's/,$//')

Однако, если вы знаете pid запущенного вами подпроцесса, вы можете просто проверить, выполняется ли он еще.

0
18.03.2021, 23:01

Теги

Похожие вопросы