Linux Debian 9 守护进程标准输入 (bash)

标签 linux bash service debian daemon

有没有办法将一个值通过管道传输到守护进程中,以便在守护进程启动时填充成功启动所需的服务选项。我运行的是 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进入守护进程,否则守护进程正在执行的服务无法正确启动。我尝试过 echo 中的标准输入混合>>> <<< --exec的内部和外部但运气不佳...

TLDR; 我该如何让它发挥作用? echo "Y" | start-stop-daemon ...

最佳答案

执行此操作的正确方法是在程序参数中使用 -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 程序,例如 是“Y”|启动-停止-守护进程 --start --exec yourdaemon

关于Linux Debian 9 守护进程标准输入 (bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52169728/

相关文章:

php - 我想在 redhat fedora 20 linux 上找到/验证生成我的 php 错误日志

linux - 使用过滤器创建具有进程名称的文件

string - Bash 从列表中选择随机字符串

bash - 对于 `ls` 中的名称和带空格的文件名

android - 线程 sleep 奇怪的行为

java - 从不同的目录编译java文件

c - 通过 system() C/C+ 将 mpi 等级传递给 bash 脚本;奇怪的错误

angularjs - 如何从 Controller 动态更改 Angularjs 服务内部变量的值?

java - 包装 Java 进程的 Windows 服务不时停止

linux - 给定一个 PPID,如何找到所有关联的 PID?