![](/img/trans.png)
[英]Time multiple commands running in parallel in shell and save it in file
[英]Running multiple Gradle commands in parallel on Linux shell
请注意:虽然这个问题中的两个主要技术是 Spring Boot 和 Gradle,但我真的认为这是一个 Linux/命令行问题,涉及前后台进程!
我正在尝试通过Gradle使我的 Spring Boot 应用程序在热插拔(“开发”)模式下运行。 阅读这篇有趣的 DZone 文章后,只需几个简单的步骤:
build.gradle
做一些小的调整./gradlew build --continuous
; 等待它完成/启动./gradlew bootRun
但是,我正在尝试对此进行一点改进。 我只想运行一个 shell 脚本(例如runDevMode.sh
)并让这两个进程以正确的顺序为我启动。 所以我试过:
./gradlew build --continuous & ./gradlew bootRun && fg
我把它放在runDevMode.sh
,然后运行sh runDevMode.sh
。 我可以看到两个任务都开始时没有任何错误,但是现在当我对 Java 类进行代码更改时,我没有看到更改被选中。 关于我要去哪里的任何想法?
成功的运行是在不同的终端中运行的,所以可能不成功的运行是在争夺相同的资源(无论这些资源是什么)。 尝试使用单独的子外壳:
前景“3”。 (它不需要在后台。)
( ./gradlew build --continuous & ) ; sleep 30s && ( ./gradlew bootRun & ) ; fg
括号中的命令在子shell 中启动。 在打开的终端中,假设我们运行sh
或bash
或其他 shell,然后分配一个变量,然后键入exit
,并尝试使用该变量:
$ PS1='~> ' dash # assign a temporary prompt, run subshell
~> foo=bar
~> echo :$foo:
:bar:
~> exit
$ echo :$foo:
::
' $ ' 上方是主 shell 提示,(不要输入),而 ' -> ' 是子 shell 的提示,(也不要输入)。 冒号 (' :: ') 不是命令,它们有助于显示*$foo*
何时未设置或为空。 变量赋值不能离开子外壳(也不能跨越到并发子外壳)。
另请参阅man bash
“复合命令”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.