web-dev-qa-db-ja.com

バックグラウンドプロセスのSTDINをリダイレクトする方法は?

私のUbuntuでは、バックグラウンドでJavaアプリケーションを実行します。bashスクリプトを使用して実行すると、次のようになります。

Nohup Java -jar app.jar &
exit 0

異なる端末/セッションから、フォアグラウンドにすることなく、アプリケーションに入力文字列を書き込めるようにしたいという問題。何かのようなもの

echo "mytext" > /appdir/in

スクリプトをどのように変更すればよいですか?

2
Croll

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
1
Croll

これを試してみてください:

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名前付きパイプのライフサイクルを管理するために追加する追加のコントロールがあります。

0
Jay jargot