如何在 git-bash 中使用名称启动 Windows 进程

How to start a windows process in git-bash with a name

我想在一个带有进程名称的新窗口中从 git bash 启动一个 java 应用程序。
例如,在 win cmd 中它是简单的 start"appname" java -jar /path/to.jar
但在 git bash 我得到一个错误 The system cannot find the file javaapp

旁注

  • windows 10 环境
  • 我使用 git bash 作为我的主要终端,因为那里有可用的 unix 命令以及提示中可见的 git 存储库状态。
  • 命名该进程的主要原因是我有一个启动多个 java 应用程序的 shell 脚本,以及一个将它们全部杀死的 shell 脚本。对于 kill 部分,我需要该进程的 PID
  • 我在 springhow.com 上遵循了这个很棒的教程,但是这个过程没有在新窗口中启动,如果我尝试使用 start 它会给出错误的 pid(不是 java 应用程序的 pid)所以我尝试了解决方案这个stackoverflow答案,但它在bash中不起作用

如果有帮助,这是启动实例的脚本(主要来自上面的链接):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash

#------ DECLARATIONS
app_path=./target/1.0-SNAPSHOT.jar
pidFile=./pid.file
instances=1

#------ BUILD IF NEEDED
if [ ! -f $app_path ];
then
    echo Building project...
    mvn clean package
else
  echo Using existing project build
fi

#------ UPDATING INSTANCES COUNT FROM PARAM IF PRESENT
if [ ! -z"$1" ]; then
    instances=$1
fi

echo Starting"$instances""$app_path" instances

#------ CLEARING PID FILE
> $pidFile

#------ STARTING INSTANCES
for (( i = 0; i < instances; i++ )); do
    start java -jar $app_path &
    echo $! >> $pidFile
done

echo NOTES:
echo" " Process ids for"$app_path" instances stored in"$pidFile"
echo" " To stop instances type Ctrl+C on each or run stop_multi_apps.sh script that will stop processes with ids from"$pidFile"

您可以使用 cmd 来完成此操作。

1
cmd.exe /c start "appname""app"

在这种情况下你不需要 & 因为 cmd 的 start 启动不会等待它。

如果您想在 git bash 中启动您的程序,您可以执行以下操作:

1
cmd.exe /c start "appname""C:\\path\\to\\git\\bash -c <command>"