Bash
如何重定向後台程序的STDIN?
在我的 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**命名管道的生命週期,需要添加額外的控制。