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

标签 linux

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

我的问题:

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

最佳答案

在 Linux 上,所有正在运行的进程在 /proc 下都有一个特殊目录包含过程的信息和 Hook 。 /proc 的每个子目录都是一个正在运行的进程的 PID。因此,如果您知道特定进程的 PID,就可以获得有关它的信息。例如:

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

值得注意的是 fd 目录,其中包含所有 file descriptors与过程相关联。 012 存在于(几乎?)所有进程中,0 是默认标准输入。所以写入 /proc/$PID/fd/0 将写入该进程的标准输入。

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

另见 Writing to stdin of background process在 ServerFault 上。

关于linux - 是否可以将输入传递给正在运行的服务或守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732425/

相关文章:

c - 奇怪的 : printf() affects variable value

linux - 查看正在运行的进程的 stdin/stdout/stderr - Linux 内核

linux - laravel 500 内部服务器错误?

php - MySQL MariaDB 服务器无法启动 kali linux

linux - 在 bash 脚本中设置变量

linux - WebDav 检测文件夹的写权限

linux - 如何知道gcc安装的确切位置

c - 由于 libffi 中 undefined reference ,构建 Glib 时出错

linux - make 命令和运行 build .sh 脚本之间的主要区别是什么?

linux - 从 Ansible 中 shell 命令的输出中提取特定数据