我有一个 CentOS 服务器,它当前正在运行一个 java jar 应用程序。我需要编写一个 php 脚本来通过它的输入流与这个正在运行的程序进行通信。java 程序将其输出输出到日志文件,因此我不需要访问输出流。
我不想重新启动程序,只是访问正在运行的进程并与之交互。
有人可以指出我正确的方向吗?
首先,找到应用程序的 ProcessID。您可以使用:
ps -Af | grep java
由于您使用的是 java,因此使用jps
查找 PID 的命令可能会更方便。
我假设正在运行的应用程序的 PID 是 12345。发出命令就足够了:
cat >/proc/12345/fd/0
您输入的任何内容都将被放入该应用程序的标准输入中。请注意,它fd
包含应用程序使用的文件描述符,我想第 0 个文件描述符总是stdin
.
使用 PHP 写入文件(并因此被应用程序用作输入)也是可能的。
如果可移植性对您来说不是一件大事,为什么不创建自己的管道呢?我对 java 应用程序了解不多,但看看“mkfifo”函数/命令。