【问题标题】:Linux Debian 9 daemon stdin (bash)Linux Debian 9 守护程序标准输入 (bash)
【发布时间】:2019-02-09 16:33:41
【问题描述】:

有没有办法将值通过管道传输到守护程序中,以便在守护程序启动时填充成功启动所需的服务选项。我正在运行 Debian 9,这是一段 sn-p 代码:

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 解析到守护程序中,否则守护程序正在执行的服务无法正确启动。我在--exec 内部和外部尝试了来自echo >>> <<< 的stdin 的混合物,但没有运气......

TLDR; 我怎样才能让它工作? echo "Y" | start-stop-daemon ...

【问题讨论】:

    标签: linux bash service debian daemon


    【解决方案1】:

    执行此操作的正确方法是在程序参数中使用-y 开关(例如),它将在没有提示的情况下启动守护程序。一般来说,没有此选项是一种非常糟糕的做法。

    否则我只是用一个提示“Y”的简单python脚本进行了测试,它可以工作。 脚本:

    #!/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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多