问题描述
我用systemd创建了一个服务,该服务使用wendy(inotify替换工具)侦听目录并在发生某些更改时运行bash脚本。
但是,我的脚本在特定时间依赖于stdin来读取变量。但是当服务运行时,它会跳过在终端中完全询问我的输入,并继续执行其余的bash脚本。
我是systemd和services的新手,我是否仍然可以强迫它要求我提供输入?
这是/ 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套接字的程序,并且您的自动化脚本可以与该客户端通信以请求输入(参见{this Stack Exchange post)。
对于netcat-openbsd,有-U选项。如果您没有安装,则可能安装了netcat-traditional。我建议切换。
示例命令:nc -U / var / run / socket