如何重定向后台进程的STDIN?

如何重定向后台进程的STDIN?

在我的 Ubuntu 中,我在后台运行 java 应用程序。我使用 bash 脚本来运行它,现在它看起来像:

nohup java -jar app.jar &
exit 0

问题是我希望能够从不同的终端/会话将输入字符串写入我的应用程序,而不将其置于前台。就像是

echo "mytext" > /appdir/in

我应该如何更改我的脚本?

答案1

主目录

#!/bin/bash
set -e

if [ ! -p in ]; then
    mkfifo in
fi
tail -f in | java -jar app.jar

使用以下语法将命令发送到应用程序

echo "command" > /home/user/in

答案2

尝试一下:

mkfifo /appdir/in
nohup java -jar app.jar < /appdir/in &
exit 0

考试:

$ ./startapp.sh
$ printf "%s\n" "mytext" >> /appdir/in
$ cat nohup.out
mytext

$

为了管理生命周期,需要添加额外的控制/应用程序目录/中命名管道。

相关内容