是否可以将输入传递给正在运行的服务或守护程序?

时间:2016-11-22 01:36:28

标签: linux

我想创建一个在Linux上作为守护程序运行的Java控制台应用程序,我创建了应用程序和脚本以将应用程序作为后台守护程序运行。应用程序运行并等待命令行输入。

我的问题:

是否可以将命令行输入传递给正在运行的守护程序?

1 个答案:

答案 0 :(得分:5)

所有正在运行的进程在/proc下都有一个特殊目录,其中包含进程中的信息和挂钩。 /proc的每个子目录都是正在运行的进程的PID。因此,如果您知道特定过程的PID,则可以获得有关它的信息。 E.g:

$ sleep 100 & ls /proc/$!
...
cmdline
...
cwd
environ
exe
fd
fdinfo
...
status
...

值得注意的是fd目录,其中包含与流程关联的所有file descriptors。所有进程都存在012(几乎?),0是默认的stdin。因此,写入/proc/$PID/fd/0将写入该进程'stdin。

更强大的替代方法是设置一个连接到进程'stdin的named pipe;然后您可以写入该管道,并且该过程将读取它而无需依赖/proc文件系统。

另请参阅ServerFault上的Writing to stdin of background process