我想创build一个在Linux上作为守护程序运行的Java控制台应用程序,我已经创build了应用程序和脚本来运行应用程序作为后台守护程序。 应用程序运行并等待命令行input。
我的问题:
是否有可能将命令行input传递给正在运行的守护进程?
所有正在运行的进程在/proc
下都有一个特殊的目录,包含进程中的信息和钩子。 /proc
每个子目录是正在运行的进程的PID。 所以如果你知道一个特定进程的PID,你可以得到关于它的信息。 例如:
$ sleep 100 & ls /proc/$! ... cmdline ... cwd environ exe fd fdinfo ... status ...
值得注意的是fd
目录,其中包含与进程相关的所有文件描述符 。 (几乎?)所有进程都存在0
和0
是默认标准输入。 所以写入/proc/$PID/fd/0
将写入该进程的标准输入。
更强大的替代方法是建立一个连接到你的进程stdin的命名管道 ; 那么你可以写入该管道,进程将读取它,而不需要依赖/proc
文件系统。
另请参见在serverFault上写入后台进程的标准输入 。