在特定条件下将自身带到前台的 RC 脚本

在特定条件下将自身带到前台的 RC 脚本

我有一个简单的脚本,要求用户输入([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

相关内容