Bash

如何重定向後台程序的STDIN?

  • March 31, 2016

在我的 Ubuntu 中,我在後台執行 java 應用程序。我使用 bash 腳本來執行它,現在它看起來像:

nohup java -jar app.jar &
exit 0

我希望能夠從不同的終端/會話將輸入字元串寫入我的應用程序而不使其成為前台的問題。就像是

echo "mytext" > /appdir/in

我應該如何更改我的腳本?

main.sh

#!/bin/bash
set -e

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

使用以下語法向應用程序發送命令

echo "command" > /home/user/in

試試這個:

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

考試:

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

$

為了管理**/appdir/in**命名管道的生命週期,需要添加額外的控制。

引用自:https://unix.stackexchange.com/questions/273337