我有一个简单的脚本,要求用户输入([y/N]),然后对其进行操作。我编写了一个守护进程rc
包装器,以便它可以从启动时运行。我想知道是否可以让守护进程/脚本请求用户输入,然后将其置于后台,直到再次询问为止,此时它会将自己置于前台?这可能吗?这实用吗? fg/bg 控件应该托管在哪里?在rc.d
脚本中还是在主脚本中?
答案1
不要为了一项服务而阻止启动过程,除非它是一些绝对关键的服务,否则机器将无法使用(例如输入密码来解密操作系统磁盘)。
如果某些服务需要手动干预才能启动(如果可能的话,应该避免这种情况,除非您喜欢在凌晨 3 点收到寻呼,因为由于 UPS 故障而导致服务在计划外重新启动后没有恢复),请确保它不会t 阻止启动。把需要做的事情放在后台。
要允许用户与服务交互,请在内部运行它屏幕(如果您更喜欢 tmux,则使用 tmux)创建一个伪终端,服务将在其中读取输入并将输出写入其中。
screen -d -m -S myservice /usr/local/sbin/myservice --interactive-start
要连接到 Screen 创建的终端,请使用
screen -r -d -S myservice
您可以从任何地方执行此操作:在控制台上、通过 SSH 等。您需要screen
以同一用户身份运行该命令两次。要脱离 Screen 会话并使其在后台运行,请按Ctrl+ A D。