main.sh
#!/bin/bash
set -e
if [ ! -p in ]; then
mkfifo in
fi
tail -f in | java -jar app.jar
Envie o comando para o aplicativo com a seguinte sintaxe
echo "command" > /home/user/in
No meu Ubuntu, eu executo o aplicativo java em segundo plano. Eu uso script bash para executá-lo e agora parece que:
nohup java -jar app.jar &
exit 0
O problema que eu quero ser capaz de escrever uma string de entrada para o meu aplicativo, sem torná-lo em primeiro plano, a partir de diferentes terminais / sessões. Algo como
echo "mytext" > /appdir/in
Como devo mudar meu roteiro?
Experimente:
mkfifo /appdir/in
nohup java -jar app.jar < /appdir/in &
exit 0
O teste:
$ ./startapp.sh
$ printf "%s\n" "mytext" >> /appdir/in
$ cat nohup.out
mytext
$
Existe um controle adicional para adicionar, a fim de gerenciar o ciclo de vida do / appdir / in pipe nomeado.
Tags bash nohup io stdin io-redirection