Linux Debian 9, демон stdin (bash) - PullRequest
       33

Linux Debian 9, демон stdin (bash)

0 голосов
/ 04 сентября 2018

Есть ли способ передать значение в демон, чтобы при запуске демона он заполнял опции сервиса, необходимые для успешного запуска. Я использую Debian 9, и вот фрагмент кода:

start-stop-daemon --start --chuid $USER \
$START_STOP_OPTIONS --exec $DAEMON  -- \
--username $VPN_USER --password $VPN_PASSWORD --domain $VPN_DOMAIN \
$OPTIONS $VPN_SERVER:$VPN_SERVER_PORT&

В идеале мне нужно проанализировать Y в демоне, в противном случае служба, выполняемая демоном, не может запуститься правильно. Я попробовал смесь stdin из echo >>> <<< внутри и снаружи --exec, но не повезло ...

TLDR; Как мне заставить это работать? echo "Y" | start-stop-daemon ...

1 Ответ

0 голосов
/ 04 сентября 2018

Правильный способ сделать это - иметь в параметрах программы переключатель -y (например), который запускает демон без запросов. В общем, очень плохая практика - не иметь такой опции.

В противном случае я только что протестировал с простым скриптом Python, который запрашивает «Y», и это работает. Сценарий:

#!/usr/bin/python3
from time import sleep
k = input("prompt:")

if k == "Y":
    print("exit!")
    exit(1)

while True:
    sleep(100)

Я запускаю его как echo "Y" | start-stop-daemon --start --exec /home/user/tests/startd.py, и он печатает exit! и выходит.

Если вам нужно несколько символов "Y", вы можете попробовать программу yes, например: yes "Y" | start-stop-daemon --start --exec yourdaemon.

...