当脚本执行时,如何强制服务(bash脚本)从stdin读取(要求我输入一些内容)



我用systemd创建了一个服务,该服务使用wendy(inotify替换工具(在目录中侦听,并在发生更改时运行bash脚本。

但是,我的脚本在某个特定时间依赖stdin来读取变量。但是,当服务运行时,它会跳过在终端中向我询问输入,并继续执行bash脚本的其余部分。

我是systemd和服务的新手,有没有办法强迫它征求我的意见?

这是/var/log/syslog 中发生的情况

10月7日21:52:09服务器wendy.sh[13062]:已添加到脚本中。

10月7日21:52:09服务器wendy.sh[13062]:输入脚本名:(/home/user/scripts/blah.sh(

10月7日21:52:09服务器wendy.sh[13062]:chmod:+x 后缺少操作数

10月7日21:52:09服务器wendy.sh[13062]:有关详细信息,请尝试"chmod--help"。

它本应该要求我给chmod取一个名字。

如何做到这一点?

谢谢

不幸的是,在作为后台任务运行的脚本中请求用户输入非常困难,因为它们没有附加终端。我建议您尝试找到从stdin读取输入的替代方法。

如果您真的想实现这一点,例如,您可以在某个地方运行一个侦听UNIX套接字的程序,并且您的自动化脚本可以与该客户端通信以请求输入(参见本Stack Exchange文章(。

对于netcat openbsd,有一个-U选项。如果你没有,你可能安装了netcat传统;我建议换一下。

示例命令:nc-U/var/run/socket

最新更新