是否有可能将input传递给正在运行的服务或守护进程?

我想创build一个在Linux上作为守护程序运行的Java控制台应用程序,我已经创build了应用程序和脚本来运行应用程序作为后台守护程序。 应用程序运行并等待命令行input。

我的问题:

是否有可能将命令行input传递给正在运行的守护进程?

所有正在运行的进程在/proc下都有一个特殊的目录,包含进程中的信息和钩子。 /proc每个子目录是正在运行的进程的PID。 所以如果你知道一个特定进程的PID,你可以得到关于它的信息。 例如:

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

值得注意的是fd目录,其中包含与进程相关的所有文件描述符 。 (几乎?)所有进程都存在00是默认标准输入。 所以写入/proc/$PID/fd/0将写入该进程的标准输入。

更强大的替代方法是建立一个连接到你的进程stdin的命名管道 ; 那么你可以写入该管道,进程将读取它,而不需要依赖/proc文件系统。

另请参见在serverFault上写入后台进程的标准输入 。