백그라운드 프로세스의 STDIN을 리디렉션하는 방법은 무엇입니까?

백그라운드 프로세스의 STDIN을 리디렉션하는 방법은 무엇입니까?

내 우분투에는 백그라운드에서 실행되는 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

$

수명주기를 관리하려면 추가적인 제어 기능을 추가해야 합니다./응용 프로그램 디렉터리/in명명된 파이프.

관련 정보