如何在使用 bash 时启动一个命名的后台进程?

如何在使用 bash 时启动一个命名的后台进程?

我有一个如下所示的脚本:

#!/bin/bash

tsx watch services/$1/src/index.ts

这将启动tsc给定的服务:

script/start_service some-service

如果我添加&结尾,它将作为一项作业执行:

script/start_service some-service &

但我仍然得到一些输出。然后,如果我将其(所有)输出重定向到/dev/null

 script/start_service some-service > /dev/null 2>&1 &

它在后台正确启动了服务,但我的脚本返回后我无法查找它。

我想弄清楚的是如何向我开始的作业添加一个名称(或其他唯一标识符),以便我以后可以从另一个脚本中查找它(并且可能在必要时终止它)。

注意问题是相关的,但我不知道如何将答案应用到我的用例中。答案:

bash -c "exec -a MyUniqueProcessName <command> &"

对我来说不起作用。无论我做什么,我都无法获得具有我传递的名称的进程。

注意我不直接将其分配pid给变量的原因是我的脚本终止,并且每当用户再次调用我的脚本时,它都需要检查当前正在运行哪些服务,并且它无权访问上次执行脚本时创建的短暂局部变量。

相关内容