在我的 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
$
为了管理生命周期,需要添加额外的控制/应用程序目录/中命名管道。